├── service ├── __init__.py ├── board_excluded_member.py ├── location.py ├── source.py ├── code.py ├── priority.py ├── board_sub_type.py ├── board_item.py ├── board_type.py ├── board_team.py ├── survey_question.py ├── board_status.py ├── ticket_task.py ├── survey_result.py ├── knowledge_base_article.py ├── survey.py ├── board.py ├── ticket_note.py ├── boards_api.py ├── ticket_notes_api.py ├── tickets_api.py └── ticket.py ├── company ├── __init__.py ├── contact_department.py ├── contact_relationship.py ├── contact_type.py ├── company_type.py ├── configuration_type.py ├── configuration_status.py ├── contact_note.py ├── company_note.py ├── contact_track.py ├── contact_communication.py ├── company_team.py ├── company_status.py ├── configuration_type_question.py ├── configurations_api.py ├── companies_api.py ├── company_site.py ├── contact_communications_api.py ├── company_types_api.py ├── company_statuses_api.py ├── company_management_summary_reports_api.py ├── contacts_api.py ├── company_management_summary_report.py ├── contact.py ├── configuration.py └── company.py ├── finance ├── __init__.py ├── agreement_work_role_exclusion.py ├── agreement_work_type_exclusion.py ├── agreement_site.py ├── agreement_adjustment.py ├── agreement_board_default.py ├── invoice_payment.py ├── currency.py ├── tax_code_x_ref.py ├── agreement_work_role.py ├── agreement_work_type.py ├── accounting_batch.py ├── agreement_addition.py ├── agreements_api.py ├── accounting_unposted_procurement.py ├── accounting_unposted_invoice.py ├── invoice.py ├── accounting_unposted_expense.py ├── agreement_type.py ├── accounting_batch_transaction.py ├── agreement.py └── tax_code.py ├── system ├── __init__.py ├── batch.py ├── report.py ├── info.py ├── product.py ├── link.py ├── audit_trail.py ├── callback.py ├── document.py ├── menu_entry.py ├── connectwise_hosted_setup.py ├── members_api.py ├── callbacks_api.py ├── user_defined_field.py └── member.py ├── MANIFEST.in ├── your_api.json ├── CHANGES.txt ├── cw_model.py ├── procurement ├── manufacturer.py ├── shipment_method.py ├── adjustment_type.py ├── adjustment.py ├── category.py ├── adjustment_detail.py ├── catalog_component.py ├── product_picking_shipping_detail.py ├── product_component.py ├── shipment_methods_api.py ├── catalog_item.py ├── purchase_order_line_item.py ├── product_item.py └── purchase_order.py ├── marketing ├── campaign_sub_type.py ├── campaign_types.py ├── campaign_audit.py ├── campaign_email_opened.py ├── group_contact.py ├── campaign_status.py ├── group.py ├── group_company.py ├── campaign_link_clicked.py ├── campaign_form_submitted.py └── campaign.py ├── model_template.txt ├── sales ├── opportunity_rating.py ├── opportunity_type.py ├── order_status.py ├── activity_status.py ├── activity_type.py ├── opportunity_note.py ├── opportunity_team.py ├── opportunity_status.py ├── opportunity_contact.py ├── opportunity_forecast.py ├── activity.py ├── order.py └── opportunity.py ├── project ├── project_contact.py ├── project_note.py ├── project_team_member.py ├── project_phase.py └── project.py ├── schedule ├── schedule_status.py ├── schedule_reminder_time.py ├── schedule_type.py ├── schedule_types_api.py ├── schedule_entries_api.py ├── schedule_entry.py ├── schedule_statuses_api.py └── schedule_reminder_times_api.py ├── __init__.py ├── expense ├── expense_type.py └── expense_entry.py ├── README.txt ├── setup.py ├── time ├── time_entries_api.py ├── charge_code.py ├── activity_stopwatch.py ├── schedule_stopwatch.py ├── ticket_stopwatch.py └── time_entry.py ├── LICENSE ├── controller_template.txt ├── README.md ├── .gitignore ├── cw_controller.py └── restapi.py /service/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /company/__init__.py: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /finance/__init__.py: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /system/__init__.py: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /MANIFEST.in: -------------------------------------------------------------------------------- 1 | include README.rst 2 | -------------------------------------------------------------------------------- /your_api.json: -------------------------------------------------------------------------------- 1 | { 2 | "API_URL" : "https://xxxx/v4_6_release/apis/3.0", 3 | "COMPANYID" : "xxxxx", 4 | "PUBLICKEY" : "xxxxx", 5 | "PRIVATEKEY" : "xxxxx", 6 | "AUTHTOKEN" : "xxxxx" 7 | } -------------------------------------------------------------------------------- /CHANGES.txt: -------------------------------------------------------------------------------- 1 | 0.0 2 | --- 3 | 4 | - Initial version 5 | 6 | 0.1 7 | --- 8 | 9 | - Hard labor. Mostly up and working with several modules completed. 10 | 11 | 0.2---- Pickup it up again after several months 12 | . Brought the RestAPI library internal as it's a dead project on GitHub now and I've had to make several patches. -------------------------------------------------------------------------------- /system/batch.py: -------------------------------------------------------------------------------- 1 | from ..cw_model import CWModel 2 | 3 | 4 | class Batch(CWModel): 5 | 6 | def __init__(self, json_dict=None): 7 | self.id = None # (String) 8 | self.responses = None # (EndpointResponse[]) 9 | 10 | # initialize object with json dict 11 | super().__init__(json_dict) 12 | -------------------------------------------------------------------------------- /system/report.py: -------------------------------------------------------------------------------- 1 | from ..cw_model import CWModel 2 | 3 | 4 | class Report(CWModel): 5 | 6 | def __init__(self, json_dict=None): 7 | self.column_definitions = None # (JObject[]) 8 | self.row_values = None # (JObject[]) 9 | 10 | # initialize object with json dict 11 | super().__init__(json_dict) 12 | -------------------------------------------------------------------------------- /system/info.py: -------------------------------------------------------------------------------- 1 | from ..cw_model import CWModel 2 | 3 | 4 | class Info(CWModel): 5 | 6 | def __init__(self, json_dict=None): 7 | self.version = None # (String) 8 | self.isCloud = None # (Boolean) 9 | self.serverTimeZone = None # (String) 10 | 11 | # initialize object with json dict 12 | super().__init__(json_dict) 13 | -------------------------------------------------------------------------------- /cw_model.py: -------------------------------------------------------------------------------- 1 | 2 | class CWModel(object): 3 | def __init__(self, json_dict=None): 4 | if json_dict is not None: 5 | self.__dict__.update(json_dict) 6 | 7 | def __repr__(self): 8 | string = '' 9 | for k, v in self.__dict__.items(): 10 | string = ''.join([string, '{}: {}\n'.format(k, v)]) 11 | return string 12 | -------------------------------------------------------------------------------- /company/contact_department.py: -------------------------------------------------------------------------------- 1 | from ..cw_model import CWModel 2 | 3 | 4 | class ContactDepartment(CWModel): 5 | def __init__(self, json_dict=None): 6 | self.id = None # (Integer) 7 | self.name = None # *(String(30)) 8 | self._info = None # (Metadata) 9 | 10 | # initialize object with json dict 11 | super().__init__(json_dict) 12 | -------------------------------------------------------------------------------- /company/contact_relationship.py: -------------------------------------------------------------------------------- 1 | from ..cw_model import CWModel 2 | 3 | 4 | class ContactRelationship(CWModel): 5 | def __init__(self, json_dict=None): 6 | self.id = None # (Integer) 7 | self.name = None # *(String(50)) 8 | self._info = None # (Metadata) 9 | 10 | # initialize object with json dict 11 | super().__init__(json_dict) 12 | -------------------------------------------------------------------------------- /system/product.py: -------------------------------------------------------------------------------- 1 | from ..cw_model import CWModel 2 | 3 | 4 | class Product(CWModel): 5 | 6 | def __init__(self, json_dict=None): 7 | self.identifier = None # (Enum) 8 | self.password = None # (String) 9 | self.installedFlag = None # (Boolean) 10 | self._info = None # (Metadata) 11 | 12 | # initialize object with json dict 13 | super().__init__(json_dict) 14 | -------------------------------------------------------------------------------- /company/contact_type.py: -------------------------------------------------------------------------------- 1 | from ..cw_model import CWModel 2 | 3 | 4 | class ContactType(CWModel): 5 | def __init__(self, json_dict=None): 6 | self.id = None # (Integer) 7 | self.description = None # *(String(50)) 8 | self.defaultFlag = None # (Boolean) 9 | self._info = None # (Metadata) 10 | 11 | # initialize object with json dict 12 | super().__init__(json_dict) 13 | -------------------------------------------------------------------------------- /procurement/manufacturer.py: -------------------------------------------------------------------------------- 1 | from ..cw_model import CWModel 2 | 3 | 4 | class Manufacturer(CWModel): 5 | 6 | def __init__(self, json_dict=None): 7 | self.id = None # (Integer) 8 | self.name = None # *(String(50)) 9 | self.inactiveFlag = None # (Boolean) 10 | self._info = None # (Metadata) 11 | 12 | # initialize object with json dict 13 | super().__init__(json_dict) 14 | -------------------------------------------------------------------------------- /marketing/campaign_sub_type.py: -------------------------------------------------------------------------------- 1 | from ..cw_model import CWModel 2 | 3 | 4 | class CampaignSubType(CWModel): 5 | 6 | def __init__(self, json_dict=None): 7 | self.id = None # (Integer) 8 | self.typeId = None # (Integer) 9 | self.name = None # *(String(100)) 10 | self._info = None # (Metadata) 11 | 12 | # initialize object with json dict 13 | super().__init__(json_dict) 14 | -------------------------------------------------------------------------------- /marketing/campaign_types.py: -------------------------------------------------------------------------------- 1 | from ..cw_model import CWModel 2 | 3 | 4 | class CampaignType (CWModel): 5 | 6 | def __init__(self, json_dict=None): 7 | self.id = None # (Integer) 8 | self.name = None # *(String(100)) 9 | self.defaultFlag = None # (Boolean) 10 | self._info = None # (Metadata) 11 | 12 | # initialize object with json dict 13 | super().__init__(json_dict) 14 | -------------------------------------------------------------------------------- /model_template.txt: -------------------------------------------------------------------------------- 1 | from ..cw_model import CWModel 2 | 3 | 4 | class ClassName(CWModel): 5 | 6 | def __init__(self, json_dict=None): 7 | # With: id(Integer) 8 | # Search: ^(\s*)(\*?)([_a-z0-9]*)\s?(\(.*$) 9 | # Replace: $1self.$3 = None # $2$4 10 | # To get: self.id = None # (Integer) 11 | 12 | 13 | # initialize object with json dict 14 | super().__init__(json_dict) 15 | -------------------------------------------------------------------------------- /sales/opportunity_rating.py: -------------------------------------------------------------------------------- 1 | from ..cw_model import CWModel 2 | 3 | 4 | class OpportunityRating(CWModel): 5 | 6 | def __init__(self, json_dict=None): 7 | self.id = None # (Integer) 8 | self.name = None # *(String(50)) 9 | self.sortOrder = None # (Integer) 10 | self._info = None # (Metadata) 11 | 12 | # initialize object with json dict 13 | super().__init__(json_dict) 14 | -------------------------------------------------------------------------------- /marketing/campaign_audit.py: -------------------------------------------------------------------------------- 1 | from ..cw_model import CWModel 2 | 3 | 4 | class ClassName(CWModel): 5 | 6 | def __init__(self, json_dict=None): 7 | # With: id(Integer) 8 | # Search: ^(\s*)(\*?)([_a-z0-9]*)\s?(\(.*$) 9 | # Replace: $1self.$3 = None # $2$4 10 | # To get: self.id = None # (Integer) 11 | 12 | 13 | # initialize object with json dict 14 | super().__init__(json_dict) 15 | -------------------------------------------------------------------------------- /project/project_contact.py: -------------------------------------------------------------------------------- 1 | from ..cw_model import CWModel 2 | 3 | 4 | class ProjectContact(CWModel): 5 | 6 | def __init__(self, json_dict=None): 7 | self.id = None # (Integer) 8 | self.projectId = None # (Integer) 9 | self.contact = None # *(ContactReference) 10 | self._info = None # (Metadata) 11 | 12 | # initialize object with json dict 13 | super().__init__(json_dict) 14 | -------------------------------------------------------------------------------- /sales/opportunity_type.py: -------------------------------------------------------------------------------- 1 | from ..cw_model import CWModel 2 | 3 | 4 | class OpportunityType(CWModel): 5 | 6 | def __init__(self, json_dict=None): 7 | self.id = None # (Integer) 8 | self.description = None # *(String(50)) 9 | self.inactiveFlag = None # (Boolean) 10 | self._info = None # (Metadata) 11 | 12 | # initialize object with json dict 13 | super().__init__(json_dict) 14 | -------------------------------------------------------------------------------- /service/board_excluded_member.py: -------------------------------------------------------------------------------- 1 | from ..cw_model import CWModel 2 | 3 | 4 | class BoardExcludedMember(CWModel): 5 | 6 | def __init__(self, json_dict=None): 7 | self.id = None # (Integer) 8 | self.memberId = None # *(Integer) 9 | self.boardId = None # (Integer) 10 | self._info = None # (Metadata) 11 | 12 | # initialize object with json dict 13 | super().__init__(json_dict) 14 | -------------------------------------------------------------------------------- /marketing/campaign_email_opened.py: -------------------------------------------------------------------------------- 1 | from ..cw_model import CWModel 2 | 3 | 4 | class CampaignEmailOpened(CWModel): 5 | 6 | def __init__(self, json_dict=None): 7 | self.id = None # (Integer) 8 | self.campaignId = None # (Integer) 9 | self.contactId = None # *(Integer) 10 | self.dateOpened = None # (String) 11 | 12 | # initialize object with json dict 13 | super().__init__(json_dict) 14 | -------------------------------------------------------------------------------- /service/location.py: -------------------------------------------------------------------------------- 1 | from ..cw_model import CWModel 2 | 3 | 4 | class Location(CWModel): 5 | 6 | def __init__(self, json_dict=None): 7 | self.id = None # (Integer) 8 | self.name = None # *(String(30)) 9 | self.where = None # *(Enum) 10 | self.defaultFlag = None # (Boolean) 11 | self._info = None # (Metadata) 12 | 13 | # initialize object with json dict 14 | super().__init__(json_dict) 15 | -------------------------------------------------------------------------------- /system/link.py: -------------------------------------------------------------------------------- 1 | from ..cw_model import CWModel 2 | 3 | 4 | class Link(CWModel): 5 | 6 | def __init__(self, json_dict=None): 7 | self.id = None # (Integer) 8 | self.name = None # *(String(50)) 9 | self.tableReferenceId = None # *(Integer) 10 | self.url = None # (String(1000)) 11 | self._info = None # (Metadata) 12 | 13 | # initialize object with json dict 14 | super().__init__(json_dict) 15 | -------------------------------------------------------------------------------- /finance/agreement_work_role_exclusion.py: -------------------------------------------------------------------------------- 1 | from ..cw_model import CWModel 2 | 3 | 4 | class AgreementWorkRoleExclusion(CWModel): 5 | 6 | def __init__(self, json_dict=None): 7 | self.id = None # (Integer) 8 | self.workRole = None # *(WorkRoleReference) 9 | self.agreementId = None # (Integer) 10 | self._info = None # (Metadata) 11 | 12 | # initialize object with json dict 13 | super().__init__(json_dict) 14 | -------------------------------------------------------------------------------- /finance/agreement_work_type_exclusion.py: -------------------------------------------------------------------------------- 1 | from ..cw_model import CWModel 2 | 3 | 4 | class AgreementWorkTypeExclusion(CWModel): 5 | 6 | def __init__(self, json_dict=None): 7 | self.id = None # (Integer) 8 | self.workType = None # *(WorkTypeReference) 9 | self.agreementId = None # (Integer) 10 | self._info = None # (Metadata) 11 | 12 | # initialize object with json dict 13 | super().__init__(json_dict) 14 | -------------------------------------------------------------------------------- /company/company_type.py: -------------------------------------------------------------------------------- 1 | from ..cw_model import CWModel 2 | 3 | 4 | class CompanyType(CWModel): 5 | 6 | def __init__(self, json_dict=None): 7 | self.id = None # (Integer) 8 | self.name = None # *(String(50)) 9 | self.defaultFlag = None # (Boolean) 10 | self.vendorFlag = None # (Boolean) 11 | self._info = None # (Metadata) 12 | 13 | # initialize object with json dict 14 | super().__init__(json_dict) 15 | -------------------------------------------------------------------------------- /company/configuration_type.py: -------------------------------------------------------------------------------- 1 | from ..cw_model import CWModel 2 | 3 | 4 | class ConfigurationType(CWModel): 5 | def __init__(self, json_dict=None): 6 | self.id = None # (Integer) 7 | self.name = None # *(String(50)) 8 | self.inactiveFlag = None # (Boolean) 9 | self.systemFlag = None # (Boolean) 10 | self._info = None # (Metadata) 11 | 12 | # initialize object with json dict 13 | super().__init__(json_dict) 14 | -------------------------------------------------------------------------------- /marketing/group_contact.py: -------------------------------------------------------------------------------- 1 | from ..cw_model import CWModel 2 | 3 | 4 | class GroupContact(CWModel): 5 | 6 | def __init__(self, json_dict=None): 7 | self.id = None # *(Integer) 8 | self.groupId = None # (Integer) 9 | self.note = None # (String(50)) 10 | self.unsubscribeFlag = None # (Boolean) 11 | self._info = None # (Metadata) 12 | 13 | # initialize object with json dict 14 | super().__init__(json_dict) 15 | -------------------------------------------------------------------------------- /marketing/campaign_status.py: -------------------------------------------------------------------------------- 1 | from ..cw_model import CWModel 2 | 3 | 4 | class CampaignStatus(CWModel): 5 | 6 | def __init__(self, json_dict=None): 7 | self.id = None # (Integer) 8 | self.name = None # *(String(100)) 9 | self.defaultFlag = None # (Boolean) 10 | self.inactiveFlag = None # (Boolean) 11 | self._info = None # (Metadata) 12 | 13 | # initialize object with json dict 14 | super().__init__(json_dict) 15 | -------------------------------------------------------------------------------- /finance/agreement_site.py: -------------------------------------------------------------------------------- 1 | from ..cw_model import CWModel 2 | 3 | 4 | class AgreementSite(CWModel): 5 | 6 | def __init__(self, json_dict=None): 7 | self.id = None # (Integer) 8 | self.company = None # *(CompanyReference) 9 | self.site = None # (SiteReference) 10 | self.agreementId = None # (Integer) 11 | self._info = None # (Metadata) 12 | 13 | # initialize object with json dict 14 | super().__init__(json_dict) 15 | -------------------------------------------------------------------------------- /schedule/schedule_status.py: -------------------------------------------------------------------------------- 1 | from ..cw_model import CWModel 2 | 3 | 4 | class ScheduleStatus(CWModel): 5 | 6 | def __init__(self, json_dict=None): 7 | self.id = None # (Integer) 8 | self.name = None # *(String(30)) 9 | self.defaultFlag = None # (Boolean) 10 | self.showAsTentativeFlag = None # (Boolean) 11 | self._info = None # (Metadata) 12 | 13 | # initialize object with json dict 14 | super().__init__(json_dict) 15 | -------------------------------------------------------------------------------- /schedule/schedule_reminder_time.py: -------------------------------------------------------------------------------- 1 | from ..cw_model import CWModel 2 | 3 | 4 | class ScheduleReminderTime(CWModel): 5 | 6 | def __init__(self, json_dict=None): 7 | self.id = None # (Integer) 8 | self.time = None # (Integer) 9 | self.description = None # (String(10)) 10 | self.defaultFlag = None # (Boolean) 11 | self._info = None # (Metadata) 12 | 13 | # initialize object with json dict 14 | super().__init__(json_dict) 15 | -------------------------------------------------------------------------------- /company/configuration_status.py: -------------------------------------------------------------------------------- 1 | from ..cw_model import CWModel 2 | 3 | 4 | class ConfigurationStatus(CWModel): 5 | 6 | def __init__(self, json_dict=None): 7 | self.id = None # (Integer) 8 | self.description = None # *(String(50)) 9 | self.closedFlag = None # (Boolean) 10 | self.defaultFlag = None # (Boolean) 11 | self._info = None # (Metadata) 12 | 13 | # initialize object with json dict 14 | super().__init__(json_dict) 15 | -------------------------------------------------------------------------------- /service/source.py: -------------------------------------------------------------------------------- 1 | from ..cw_model import CWModel 2 | 3 | 4 | class Source(CWModel): 5 | 6 | def __init__(self, json_dict=None): 7 | self.id = None # (Integer) 8 | self.name = None # *(String(50)) 9 | self.defaultFlag = None # (Boolean) 10 | self._info = None # (Metadata) 11 | self.enteredBy = None # (String) 12 | self.dateEntered = None # (String) 13 | 14 | # initialize object with json dict 15 | super().__init__(json_dict) 16 | -------------------------------------------------------------------------------- /project/project_note.py: -------------------------------------------------------------------------------- 1 | from ..cw_model import CWModel 2 | 3 | 4 | class ProjectNote(CWModel): 5 | 6 | def __init__(self, json_dict=None): 7 | self.id = None # (Integer) 8 | self.projectId = None # (Integer) 9 | self.text = None # *(String) 10 | self.type = None # (NoteTypeReference) 11 | self.flagged = None # (Boolean) 12 | self._info = None # (Metadata) 13 | 14 | # initialize object with json dict 15 | super().__init__(json_dict) 16 | -------------------------------------------------------------------------------- /marketing/group.py: -------------------------------------------------------------------------------- 1 | from ..cw_model import CWModel 2 | 3 | 4 | class Group(CWModel): 5 | 6 | def __init__(self, json_dict=None): 7 | self.id = None # (Integer) 8 | self.name = None # *(String) 9 | self.publicDescription = None # (String(255)) 10 | self.publicFlag = None # (Boolean) 11 | self.inactiveFlag = None # (Boolean) 12 | self._info = None # (Metadata) 13 | 14 | # initialize object with json dict 15 | super().__init__(json_dict) 16 | -------------------------------------------------------------------------------- /procurement/shipment_method.py: -------------------------------------------------------------------------------- 1 | from ..cw_model import CWModel 2 | 3 | 4 | class ShipmentMethod(CWModel): 5 | 6 | def __init__(self, json_dict=None): 7 | self.id = None # (Integer) 8 | self.name = None # *(String(50)) 9 | self.defaultFlag = None # (Boolean) 10 | self.trackingUrl = None # (String(200)) 11 | self.shippingType = None # (Enum) 12 | self._info = None # (Metadata) 13 | 14 | # initialize object with json dict 15 | super().__init__(json_dict) 16 | -------------------------------------------------------------------------------- /system/audit_trail.py: -------------------------------------------------------------------------------- 1 | from ..cw_model import CWModel 2 | 3 | 4 | class AuditTrail(CWModel): 5 | 6 | def __init__(self, json_dict=None): 7 | self.text = None # (String) 8 | self.enteredDate = None # (String) 9 | self.enteredBy = None # (String) 10 | self.auditType = None # (String) 11 | self.auditSubType = None # (String) 12 | self.auditSource = None # (String) 13 | 14 | # initialize object with json dict 15 | super().__init__(json_dict) 16 | -------------------------------------------------------------------------------- /finance/agreement_adjustment.py: -------------------------------------------------------------------------------- 1 | from ..cw_model import CWModel 2 | 3 | 4 | class AgreementAdjustment(CWModel): 5 | 6 | def __init__(self, json_dict=None): 7 | self.id = None # (Integer) 8 | self.amount = None # (Number) 9 | self.description = None # (String(1000)) 10 | self.effectiveDate = None # (String) 11 | self.agreementId = None # (Integer) 12 | self._info = None # (Metadata) 13 | 14 | # initialize object with json dict 15 | super().__init__(json_dict) 16 | -------------------------------------------------------------------------------- /marketing/group_company.py: -------------------------------------------------------------------------------- 1 | from ..cw_model import CWModel 2 | 3 | 4 | class GroupCompany(CWModel): 5 | 6 | def __init__(self, json_dict=None): 7 | self.id = None # *(Integer) 8 | self.groupId = None # (Integer) 9 | self.defaultContactFlag = None # (Boolean) 10 | self.allContactsFlag = None # (Boolean) 11 | self.unsubscribeFlag = None # (Boolean) 12 | self._info = None # (Metadata) 13 | 14 | # initialize object with json dict 15 | super().__init__(json_dict) 16 | -------------------------------------------------------------------------------- /marketing/campaign_link_clicked.py: -------------------------------------------------------------------------------- 1 | from ..cw_model import CWModel 2 | 3 | 4 | class CampaignLinkClicked(CWModel): 5 | 6 | def __init__(self, json_dict=None): 7 | self.id = None # (Integer) 8 | self.campaignId = None # (Integer) 9 | self.contactId = None # *(Integer) 10 | self.dateClicked = None # (String) 11 | self.url = None # *(String(2083)) 12 | self.queryString = None # (String) 13 | 14 | # initialize object with json dict 15 | super().__init__(json_dict) 16 | -------------------------------------------------------------------------------- /company/contact_note.py: -------------------------------------------------------------------------------- 1 | from ..cw_model import CWModel 2 | 3 | 4 | class ContactNote(CWModel): 5 | def __init__(self, json_dict=None): 6 | self.id = None # (Integer) 7 | self.contactId = None # (Integer) 8 | self.text = None # *(String) 9 | self.type = None # (NoteTypeReference) 10 | self.flagged = None # (Boolean) 11 | self.enteredBy = None # (String) 12 | self._info = None # (Metadata) 13 | 14 | # initialize object with json dict 15 | super().__init__(json_dict) 16 | -------------------------------------------------------------------------------- /service/code.py: -------------------------------------------------------------------------------- 1 | from ..cw_model import CWModel 2 | 3 | 4 | class Code(CWModel): 5 | 6 | def __init__(self, json_dict=None): 7 | self.id = None # (Integer) 8 | self.name = None # *(String(50)) 9 | self.description = None # *(String) 10 | self.boardId = None # (Integer) 11 | self.locationId = None # (Integer) 12 | self.businessUnitId = None # (Integer) 13 | self._info = None # (Metadata) 14 | 15 | # initialize object with json dict 16 | super().__init__(json_dict) 17 | -------------------------------------------------------------------------------- /finance/agreement_board_default.py: -------------------------------------------------------------------------------- 1 | from ..cw_model import CWModel 2 | 3 | 4 | class AgreementBoardDefault(CWModel): 5 | 6 | def __init__(self, json_dict=None): 7 | self.id = None # (Integer) 8 | self.board = None # *(BoardReference) 9 | self.serviceType = None # (ServiceTypeReference) 10 | self.defaultFlag = None # (Boolean) 11 | self.agreementId = None # (Integer) 12 | self._info = None # (Metadata) 13 | 14 | # initialize object with json dict 15 | super().__init__(json_dict) 16 | -------------------------------------------------------------------------------- /service/priority.py: -------------------------------------------------------------------------------- 1 | from ..cw_model import CWModel 2 | 3 | 4 | class Priority(CWModel): 5 | 6 | def __init__(self, json_dict=None): 7 | self.id = None # (Integer) 8 | self.name = None # *(String(50)) 9 | self.color = None # *(String(50)) 10 | self.sortOrder = None # (Integer) 11 | self.defaultFlag = None # (Boolean) 12 | self.imageLink = None # (String) 13 | self._info = None # (Metadata) 14 | 15 | # initialize object with json dict 16 | super().__init__(json_dict) 17 | -------------------------------------------------------------------------------- /company/company_note.py: -------------------------------------------------------------------------------- 1 | from ..cw_model import CWModel 2 | 3 | 4 | class CompanyNote(CWModel): 5 | 6 | def __init__(self, json_dict=None): 7 | self.id = None # (Integer) 8 | self.text = None # *(String) 9 | self.type = None # (NoteTypeReference) 10 | self.flagged = None # (Boolean) 11 | self.enteredBy = None # (String) 12 | self.company = None # (CompanyReference) 13 | self._info = None # (Metadata) 14 | 15 | # initialize object with json dict 16 | super().__init__(json_dict) 17 | -------------------------------------------------------------------------------- /finance/invoice_payment.py: -------------------------------------------------------------------------------- 1 | from ..cw_model import CWModel 2 | 3 | 4 | class InvoicePayment(CWModel): 5 | 6 | def __init__(self, json_dict=None): 7 | self.id = None # (Integer) 8 | self.type = None # (String) 9 | self.invoice = None # (InvoiceReference) 10 | self.amount = None # *(Number) 11 | self.paymentDate = None # (String) 12 | self.appliedBy = None # (String) 13 | self._info = None # (Metadata) 14 | 15 | # initialize object with json dict 16 | super().__init__(json_dict) 17 | -------------------------------------------------------------------------------- /sales/order_status.py: -------------------------------------------------------------------------------- 1 | from ..cw_model import CWModel 2 | 3 | 4 | class OrderStatus(CWModel): 5 | 6 | def __init__(self, json_dict=None): 7 | self.id = None # (Integer) 8 | self.name = None # *(String(50)) 9 | self.defaultFlag = None # (Boolean) 10 | self.inactiveFlag = None # (Boolean) 11 | self.sortOrder = None # (Integer) 12 | self.closedFlag = None # (Boolean) 13 | self._info = None # (Metadata) 14 | 15 | # initialize object with json dict 16 | super().__init__(json_dict) 17 | -------------------------------------------------------------------------------- /procurement/adjustment_type.py: -------------------------------------------------------------------------------- 1 | from ..cw_model import CWModel 2 | 3 | 4 | class AdjustmentType(CWModel): 5 | 6 | def __init__(self, json_dict=None): 7 | self.id = None # (Integer) 8 | self.identifier = None # *(String(50)) 9 | self.name = None # (String(100)) 10 | self.auditTrailFlag = None # (Boolean) 11 | self.dateCreated = None # (String) 12 | self.createdBy = None # (String) 13 | self._info = None # (Metadata) 14 | 15 | # initialize object with json dict 16 | super().__init__(json_dict) 17 | -------------------------------------------------------------------------------- /sales/activity_status.py: -------------------------------------------------------------------------------- 1 | from ..cw_model import CWModel 2 | 3 | 4 | class ActivityStatus(CWModel): 5 | 6 | def __init__(self, json_dict=None): 7 | self.id = None # (Integer) 8 | self.name = None # *(String(30)) 9 | self.defaultFlag = None # (Boolean) 10 | self.inactiveFlag = None # (Boolean) 11 | self.spawnFollowupFlag = None # (Boolean) 12 | self.closedFlag = None # (Boolean) 13 | self._info = None # (Metadata) 14 | 15 | # initialize object with json dict 16 | super().__init__(json_dict) 17 | -------------------------------------------------------------------------------- /schedule/schedule_type.py: -------------------------------------------------------------------------------- 1 | from cw_model import CWModel 2 | 3 | 4 | class ScheduleType(CWModel): 5 | 6 | def __init__(self, json_dict=None): 7 | self.id = None # (Integer) 8 | self.name = None # *(String(50)) 9 | self.identifier = None # *(String(1)) 10 | self.chargeCode = None # (ChargeCodeReference) 11 | self.where = None # (ServiceLocationReference) 12 | self.systemFlag = None # (Boolean) 13 | self._info = None # (Metadata) 14 | 15 | # initialize object with json dict 16 | super().__init__(json_dict) 17 | -------------------------------------------------------------------------------- /sales/activity_type.py: -------------------------------------------------------------------------------- 1 | from ..cw_model import CWModel 2 | 3 | 4 | class ActivityType(CWModel): 5 | 6 | def __init__(self, json_dict=None): 7 | self.id = None # (Integer) 8 | self.name = None # *(String(50)) 9 | self.points = None # (Integer) 10 | self.defaultFlag = None # (Boolean) 11 | self.inactiveFlag = None # (Boolean) 12 | self.emailFlag = None # (Boolean) 13 | self.memoFlag = None # (Boolean) 14 | self._info = None # (Metadata) 15 | 16 | # initialize object with json dict 17 | super().__init__(json_dict) 18 | -------------------------------------------------------------------------------- /sales/opportunity_note.py: -------------------------------------------------------------------------------- 1 | from ..cw_model import CWModel 2 | 3 | 4 | class OpportunityNote(CWModel): 5 | 6 | def __init__(self, json_dict=None): 7 | self.id = None # (Integer) 8 | self.opportunityId = None # (Integer) 9 | self.type = None # (NoteTypeReference) 10 | self.text = None # *(String) 11 | self.flagged = None # (Boolean) 12 | self.enteredBy = None # (String) 13 | self.mobileGuid = None # (Guid) 14 | self._info = None # (Metadata) 15 | 16 | # initialize object with json dict 17 | super().__init__(json_dict) 18 | -------------------------------------------------------------------------------- /finance/currency.py: -------------------------------------------------------------------------------- 1 | from ..cw_model import CWModel 2 | 3 | 4 | class Currency(CWModel): 5 | 6 | def __init__(self, json_dict=None): 7 | self.id = None # (Integer) 8 | self.currencyIdentifier = None # *(String(10)) 9 | self.name = None # (String(50)) 10 | self.symbol = None # (String(10)) 11 | self.displayIdFlag = None # (Boolean) 12 | self.displaySymbolFlag = None # (Boolean) 13 | self.isoCode = None # (String(3)) 14 | self._info = None # (Metadata) 15 | 16 | # initialize object with json dict 17 | super().__init__(json_dict) 18 | -------------------------------------------------------------------------------- /service/board_sub_type.py: -------------------------------------------------------------------------------- 1 | from ..cw_model import CWModel 2 | 3 | 4 | class BoardSubType(CWModel): 5 | 6 | def __init__(self, json_dict=None): 7 | self.id = None # (Integer) 8 | self.name = None # *(String(50)) 9 | self.inactive = None # (Boolean) 10 | self.typeAssociationIds = None # (Integer[]) 11 | self.addAllTypes = None # (Boolean) 12 | self.removeAllTypes = None # (Boolean) 13 | self.boardId = None # (Integer) 14 | self._info = None # (Metadata) 15 | 16 | # initialize object with json dict 17 | super().__init__(json_dict) 18 | -------------------------------------------------------------------------------- /system/callback.py: -------------------------------------------------------------------------------- 1 | from ..cw_model import CWModel 2 | 3 | 4 | class Callback(CWModel): 5 | 6 | def __init__(self, json_dict=None): 7 | self.id = None # (Integer) 8 | self.description = None # (String(100)) 9 | self.url = None # *(String) 10 | self.objectId = None # *(Integer) 11 | self.type = None # *(String) 12 | self.level = None # *(String) 13 | self.memberId = None # (Integer) 14 | self.inactiveFlag = None # (Boolean) 15 | self._info = None # (Metadata) 16 | 17 | # initialize object with json dict 18 | super().__init__(json_dict) 19 | -------------------------------------------------------------------------------- /procurement/adjustment.py: -------------------------------------------------------------------------------- 1 | from ..cw_model import CWModel 2 | 3 | 4 | class Adjustment(CWModel): 5 | 6 | def __init__(self, json_dict=None): 7 | self.id = None # (Integer) 8 | self.identifier = None # *(String(50)) 9 | self.type = None # *(AdjustmentTypeReference) 10 | self.reason = None # (String(100)) 11 | self.notes = None # (String) 12 | self.closedFlag = None # (Boolean) 13 | self.closedBy = None # (String) 14 | self.closedDate = None # (String) 15 | self._info = None # (Metadata) 16 | 17 | # initialize object with json dict 18 | super().__init__(json_dict) 19 | -------------------------------------------------------------------------------- /service/board_item.py: -------------------------------------------------------------------------------- 1 | from ..cw_model import CWModel 2 | 3 | 4 | class BoardItem(CWModel): 5 | 6 | def __init__(self, json_dict=None): 7 | self.id = None # (Integer) 8 | self.name = None # *(String(50)) 9 | self.inactive = None # (Boolean) 10 | self.typeAssociations = None # (TypeAssociations[]) 11 | self.addAllSubTypes = None # (Boolean) 12 | self.removeAllSubTypes = None # (Boolean) 13 | self.typeId = None # (Integer) 14 | self.boardId = None # (Integer) 15 | self._info = None # (Metadata) 16 | 17 | # initialize object with json dict 18 | super().__init__(json_dict) 19 | -------------------------------------------------------------------------------- /procurement/category.py: -------------------------------------------------------------------------------- 1 | from ..cw_model import CWModel 2 | 3 | 4 | class Category(CWModel): 5 | 6 | def __init__(self, json_dict=None): 7 | self.id = None # (Integer) 8 | self.name = None # *(String(50)) 9 | self.inactiveFlag = None # (Boolean) 10 | self.priceLevelXref = None # (String(10)) 11 | self.integrationXref = None # (String(100)) 12 | self.locationIds = None # (Integer[]) 13 | self.addAllLocations = None # (Boolean) 14 | self.removeAllLocations = None # (Boolean) 15 | self._info = None # (Metadata) 16 | 17 | # initialize object with json dict 18 | super().__init__(json_dict) 19 | -------------------------------------------------------------------------------- /project/project_team_member.py: -------------------------------------------------------------------------------- 1 | from ..cw_model import CWModel 2 | 3 | 4 | class ProjectTeamMember(CWModel): 5 | 6 | def __init__(self, json_dict=None): 7 | self.id = None # (Integer) 8 | self.projectId = None # (Integer) 9 | self.hours = None # (Number) 10 | self.member = None # *(MemberReference) 11 | self.projectRole = None # *(ProjectRoleReference) 12 | self.workRole = None # (WorkRoleReference) 13 | self.startDate = None # (String) 14 | self.endDate = None # (String) 15 | self._info = None # (Metadata) 16 | 17 | # initialize object with json dict 18 | super().__init__(json_dict) 19 | -------------------------------------------------------------------------------- /sales/opportunity_team.py: -------------------------------------------------------------------------------- 1 | from ..cw_model import CWModel 2 | 3 | 4 | class OpportunityTeam(CWModel): 5 | 6 | def __init__(self, json_dict=None): 7 | self.id = None # (Integer) 8 | self.type = None # *(Enum) 9 | self.member = None # (MemberReference) 10 | self.salesTeam = None # (SalesTeamReference) 11 | self.commissionPercent = None # (Integer) 12 | self.referralFlag = None # (Boolean) 13 | self.opportunityId = None # (Integer) 14 | self.responsibleFlag = None # (Boolean) 15 | self._info = None # (Metadata) 16 | 17 | # initialize object with json dict 18 | super().__init__(json_dict) 19 | -------------------------------------------------------------------------------- /system/document.py: -------------------------------------------------------------------------------- 1 | from ..cw_model import CWModel 2 | 3 | 4 | class Document(CWModel): 5 | 6 | def __init__(self, json_dict=None): 7 | self.id = None # (Integer) 8 | self.title = None # (String) 9 | self.fileName = None # (String) 10 | self.serverFileName = None # (String) 11 | self.owner = None # (String) 12 | self.linkFlag = None # (Boolean) 13 | self.imageFlag = None # (Boolean) 14 | self.publicFlag = None # (Boolean) 15 | self.readOnlyFlag = None # (Boolean) 16 | self._info = None # (Metadata) 17 | 18 | # initialize object with json dict 19 | super().__init__(json_dict) 20 | -------------------------------------------------------------------------------- /finance/tax_code_x_ref.py: -------------------------------------------------------------------------------- 1 | from ..cw_model import CWModel 2 | 3 | 4 | class TaxCodeXRef(CWModel): 5 | 6 | def __init__(self, json_dict=None): 7 | self.id = None # (Integer) 8 | self.description = None # *(String(50)) 9 | self.defaultFlag = None # (Boolean) 10 | self.levelOne = None # (Enum) 11 | self.levelTwo = None # (Enum) 12 | self.levelThree = None # (Enum) 13 | self.levelFour = None # (Enum) 14 | self.levelFive = None # (Enum) 15 | self.taxCode = None # (TaxCodeReference) 16 | self._info = None # (Metadata) 17 | 18 | # initialize object with json dict 19 | super().__init__(json_dict) 20 | -------------------------------------------------------------------------------- /service/board_type.py: -------------------------------------------------------------------------------- 1 | from ..cw_model import CWModel 2 | 3 | 4 | class BoardType(CWModel): 5 | 6 | def __init__(self, json_dict=None): 7 | self.id = None # (Integer) 8 | self.name = None # *(String(50)) 9 | self.category = None # (Enum) 10 | self.defaultFlag = None # (Boolean) 11 | self.inactive = None # (Boolean) 12 | self.requestForChange = None # (Boolean) 13 | self.boardId = None # (Integer) 14 | self.locationId = None # (Integer) 15 | self.businessUnitId = None # (Integer) 16 | self._info = None # (Metadata) 17 | 18 | # initialize object with json dict 19 | super().__init__(json_dict) 20 | -------------------------------------------------------------------------------- /sales/opportunity_status.py: -------------------------------------------------------------------------------- 1 | from ..cw_model import CWModel 2 | 3 | 4 | class OpportunityStatus(CWModel): 5 | 6 | def __init__(self, json_dict=None): 7 | self.id = None # (Integer) 8 | self.name = None # *(String(30)) 9 | self.wonFlag = None # (Boolean) 10 | self.lostFlag = None # (Boolean) 11 | self.closedFlag = None # (Boolean) 12 | self.inactiveFlag = None # (Boolean) 13 | self.defaultFlag = None # (Boolean) 14 | self._info = None # (Metadata) 15 | self.enteredBy = None # (String) 16 | self.dateEntered = None # (String) 17 | 18 | # initialize object with json dict 19 | super().__init__(json_dict) 20 | -------------------------------------------------------------------------------- /finance/agreement_work_role.py: -------------------------------------------------------------------------------- 1 | from ..cw_model import CWModel 2 | 3 | 4 | class AgreementWorkRole(CWModel): 5 | 6 | def __init__(self, json_dict=None): 7 | self.id = None # (Integer) 8 | self.workRole = None # (WorkRoleReference) 9 | self.locationId = None # (Integer) 10 | self.rateType = None # *(Enum) 11 | self.rate = None # (Number) 12 | self.limitTo = None # (Number) 13 | self.effectiveDate = None # (String) 14 | self.endingDate = None # (String) 15 | self.agreementId = None # (Integer) 16 | self._info = None # (Metadata) 17 | 18 | # initialize object with json dict 19 | super().__init__(json_dict) 20 | -------------------------------------------------------------------------------- /service/board_team.py: -------------------------------------------------------------------------------- 1 | from ..cw_model import CWModel 2 | 3 | 4 | class BoardTeam(CWModel): 5 | 6 | def __init__(self, json_dict=None): 7 | self.id = None # (Integer) 8 | self.name = None # *(String(30)) 9 | self.teamLeader = None # *(MemberReference) 10 | self.members = None # (Integer[]) 11 | self.defaultFlag = None # (Boolean) 12 | self.notifyOnTicketDelete = None # (Boolean) 13 | self.boardId = None # (Integer) 14 | self.locationId = None # (Integer) 15 | self.businessUnitId = None # (Integer) 16 | self._info = None # (Metadata) 17 | 18 | # initialize object with json dict 19 | super().__init__(json_dict) 20 | -------------------------------------------------------------------------------- /service/survey_question.py: -------------------------------------------------------------------------------- 1 | from ..cw_model import CWModel 2 | 3 | 4 | class SurveyQuestion(CWModel): 5 | 6 | def __init__(self, json_dict=None): 7 | self.id = None # (Integer) 8 | self.sequenceNumber = None # (Integer) 9 | self.type = None # *(Enum) 10 | self.question = None # *(String(1000)) 11 | self.options = None # (SurveyQuestionOption[]) 12 | self.includeFlag = None # (Boolean) 13 | self.requiredFlag = None # (Boolean) 14 | self.noAnswerPoints = None # (Integer) 15 | self.surveyId = None # (Integer) 16 | self._info = None # (Metadata) 17 | 18 | # initialize object with json dict 19 | super().__init__(json_dict) 20 | -------------------------------------------------------------------------------- /sales/opportunity_contact.py: -------------------------------------------------------------------------------- 1 | from ..cw_model import CWModel 2 | 3 | 4 | class OpportunityContact(CWModel): 5 | 6 | def __init__(self, json_dict=None): 7 | self.id = None # (Integer) 8 | self.contact = None # *(ContactReference) 9 | self.company = None # (CompanyReference) 10 | self.role = None # (OpportunitySalesRoleReference) 11 | self.notes = None # (String) 12 | self.referralFlag = None # (Boolean) 13 | self.opportunityId = None # (Integer) 14 | self.phoneNumber = None # (String) 15 | self.emailAddress = None # (String) 16 | self._info = None # (Metadata) 17 | 18 | # initialize object with json dict 19 | super().__init__(json_dict) 20 | -------------------------------------------------------------------------------- /company/contact_track.py: -------------------------------------------------------------------------------- 1 | from ..cw_model import CWModel 2 | 3 | 4 | class ContactTrack(CWModel): 5 | def __init__(self, json_dict=None): 6 | self.id = None # (Integer) 7 | self.trackId = None # *(Integer) 8 | self.name = None # (String) 9 | self.startDate = None # (String) 10 | self.endDate = None # (String) 11 | self.actionTaken = None # (Integer) 12 | self.actionRemaining = None # (Integer) 13 | self.startedBy = None # (String) 14 | self.company = None # (CompanyReference) 15 | self.contact = None # (ContactReference) 16 | self._info = None # (Metadata) 17 | 18 | # initialize object with json dict 19 | super().__init__(json_dict) 20 | -------------------------------------------------------------------------------- /company/contact_communication.py: -------------------------------------------------------------------------------- 1 | from ..cw_model import CWModel 2 | 3 | 4 | class ContactCommunication(CWModel): 5 | def __init__(self, json_dict=None): 6 | self.id = None # (Integer) 7 | self.contactId = None # (Integer) 8 | self.type = None # *(CommunicationTypeReference) {id (integer)(int32)), name (string)), _info} 9 | self.value = None # *(String(250)) 10 | self.extension = None # (String(15)) 11 | self.defaultFlag = None # (Boolean) 12 | self.mobileGuid = None # (Guid) 13 | self.communicationType = None # (Enum) ("Phone", "Fax", "Email") 14 | self._info = None # (Metadata) 15 | 16 | # initialize object with json dict 17 | super().__init__(json_dict) 18 | -------------------------------------------------------------------------------- /marketing/campaign_form_submitted.py: -------------------------------------------------------------------------------- 1 | from ..cw_model import CWModel 2 | 3 | 4 | class CampaignFormSubmitted(CWModel): 5 | 6 | def __init__(self, json_dict=None): 7 | self.id = None # (Integer) 8 | self.campaignId = None # (Integer) 9 | self.contactId = None # *(Integer) 10 | self.dateSubmitted = None # (String) 11 | self.url = None # *(String(2083)) 12 | self.queryString = None # (String) 13 | self.pageType = None # (String) 14 | self.pageSubType = None # (String) 15 | self.topic = None # (String) 16 | self.version = None # (String) 17 | self.status = None # (String) 18 | 19 | # initialize object with json dict 20 | super().__init__(json_dict) 21 | -------------------------------------------------------------------------------- /service/board_status.py: -------------------------------------------------------------------------------- 1 | from ..cw_model import CWModel 2 | 3 | 4 | class BoardStatus(CWModel): 5 | 6 | def __init__(self, json_dict=None): 7 | self.id = None # (Integer) 8 | self.name = None # *(String(50)) 9 | self.boardId = None # (Integer) 10 | self.sortOrder = None # (Integer) 11 | self.displayOnBoard = None # (Boolean) 12 | self.inactive = None # (Boolean) 13 | self.closedStatus = None # (Boolean) 14 | self.timeEntryNotAllowed = None # (Boolean) 15 | self.defaultFlag = None # (Boolean) 16 | self.escalationStatus = None # (Enum) 17 | self._info = None # (Metadata) 18 | 19 | # initialize object with json dict 20 | super().__init__(json_dict) 21 | -------------------------------------------------------------------------------- /service/ticket_task.py: -------------------------------------------------------------------------------- 1 | from ..cw_model import CWModel 2 | 3 | 4 | class TicketTask(CWModel): 5 | 6 | def __init__(self, json_dict=None): 7 | self.id = None # (Integer) 8 | self.ticketId = None # (Integer) 9 | self.notes = None # (String) 10 | self.closedFlag = None # (Boolean) 11 | self.priority = None # (Integer) 12 | self.schedule = None # (ScheduleEntryReference) 13 | self.code = None # (ServiceCodeReference) 14 | self.resolution = None # (String) 15 | self.childScheduleAction = None # (Enum) 16 | self.childTicketId = None # (Integer) 17 | self._info = None # (Metadata) 18 | 19 | # initialize object with json dict 20 | super().__init__(json_dict) 21 | -------------------------------------------------------------------------------- /service/survey_result.py: -------------------------------------------------------------------------------- 1 | from ..cw_model import CWModel 2 | 3 | 4 | class SurveyResult(CWModel): 5 | 6 | def __init__(self, json_dict=None): 7 | self.id = None # (Integer) 8 | self.ticketId = None # *(Integer) 9 | self.emailAddress = None # (String) 10 | self.footerResponse = None # (String) 11 | self.contactMeFlag = None # (Boolean) 12 | self.contact = None # (ContactReference) 13 | self.results = None # (SurveyResultDetail[]) 14 | self.totalPoints = None # (Integer) 15 | self.company = None # (CompanyReference) 16 | self.surveyId = None # (Integer) 17 | self._info = None # (Metadata) 18 | 19 | # initialize object with json dict 20 | super().__init__(json_dict) 21 | -------------------------------------------------------------------------------- /company/company_team.py: -------------------------------------------------------------------------------- 1 | from ..cw_model import CWModel 2 | 3 | 4 | class CompanyTeam(CWModel): 5 | 6 | def __init__(self, json_dict=None): 7 | self.id = None # (Integer) 8 | self.company = None # (CompanyReference) 9 | self.teamRole = None # *(TeamRoleReference) 10 | self.locationId = None # (Integer) 11 | self.businessUnitId = None # (Integer) 12 | self.contact = None # (ContactReference) 13 | self.member = None # (MemberReference) 14 | self.accountManagerFlag = None # (Boolean) 15 | self.techFlag = None # (Boolean) 16 | self.salesFlag = None # (Boolean) 17 | self._info = None # (Metadata) 18 | 19 | # initialize object with json dict 20 | super().__init__(json_dict) 21 | -------------------------------------------------------------------------------- /company/company_status.py: -------------------------------------------------------------------------------- 1 | from ..cw_model import CWModel 2 | 3 | 4 | class CompanyStatus(CWModel): 5 | 6 | def __init__(self, json_dict=None): 7 | self.id = None # (Integer) 8 | self.name = None # *(String(50)) 9 | self.defaultFlag = None # (Boolean) 10 | self.inactiveFlag = None # (Boolean) 11 | self.notifyFlag = None # (Boolean) 12 | self.disallowSavingFlag = None # (Boolean) 13 | self.notificationMessage = None # (String(500)) 14 | self.customNoteFlag = None # (Boolean) 15 | self.cancelOpenTracksFlag = None # (Boolean) 16 | self.track = None # (TrackReference) 17 | self._info = None # (Metadata) 18 | 19 | # initialize object with json dict 20 | super().__init__(json_dict) 21 | -------------------------------------------------------------------------------- /company/configuration_type_question.py: -------------------------------------------------------------------------------- 1 | from ..cw_model import CWModel 2 | 3 | 4 | class ConfigurationTypeQuestion(CWModel): 5 | def __init__(self, json_dict=None): 6 | self.id = None # (Integer) 7 | self.configurationTypeId = None # (Integer) 8 | self.fieldType = None # *(Enum) 9 | self.entryType = None # *(Enum) 10 | self.sequenceNumber = None # (Number) 11 | self.question = None # *(String(1000)) 12 | self.numberOfDecimals = None # (Integer) 13 | self.requiredFlag = None # (Boolean) 14 | self.inactiveFlag = None # (Boolean) 15 | self.possibleAnswers = None # (Array) 16 | self._info = None # (Metadata) 17 | 18 | # initialize object with json dict 19 | super().__init__(json_dict) 20 | -------------------------------------------------------------------------------- /sales/opportunity_forecast.py: -------------------------------------------------------------------------------- 1 | from ..cw_model import CWModel 2 | 3 | 4 | class OpportunityForecast(CWModel): 5 | 6 | def __init__(self, json_dict=None): 7 | self.id = None # (Integer) 8 | self.name = None # (String(50)) 9 | self.revenue = None # (Number) 10 | self.cost = None # (Number) 11 | self.type = None # *(Enum) 12 | self.status = None # (OpportunityStatusReference) 13 | self.includedFlag = None # (Boolean) 14 | self.recurring = None # (ProductRecurring) 15 | self.percent = None # (Number) 16 | self.margin = None # (Number) 17 | self.opportunityId = None # (Integer) 18 | self._info = None # (Metadata) 19 | 20 | # initialize object with json dict 21 | super().__init__(json_dict) 22 | -------------------------------------------------------------------------------- /service/knowledge_base_article.py: -------------------------------------------------------------------------------- 1 | from ..cw_model import CWModel 2 | 3 | 4 | class KnowledgeBaseArticle(CWModel): 5 | 6 | def __init__(self, json_dict=None): 7 | self.id = None # (Integer) 8 | self.title = None # *(String) 9 | self.issue = None # *(String) 10 | self.resolution = None # *(String) 11 | self.locationId = None # (Integer) 12 | self.businessUnitId = None # (Integer) 13 | self.boardId = None # (Integer) 14 | self.categoryId = None # (Integer) 15 | self.subCategoryId = None # (Integer) 16 | self.dateCreated = None # (String) 17 | self.createdBy = None # (String) 18 | self._info = None # (Metadata) 19 | 20 | # initialize object with json dict 21 | super().__init__(json_dict) 22 | -------------------------------------------------------------------------------- /procurement/adjustment_detail.py: -------------------------------------------------------------------------------- 1 | from ..cw_model import CWModel 2 | 3 | 4 | class AdjustmentDetail(CWModel): 5 | 6 | def __init__(self, json_dict=None): 7 | self.id = None # (Integer) 8 | self.catalogItem = None # *(CatalogItemReference) 9 | self.description = None # (String(50)) 10 | self.quantityOnHand = None # (Number) 11 | self.unitCost = None # (Number) 12 | self.warehouse = None # *(WarehouseReference) 13 | self.warehouseBin = None # *(WarehouseBinReference) 14 | self.quantityAdjusted = None # *(Integer) 15 | self.serialNumber = None # (String(1000)) 16 | self.adjustment = None # (AdjustmentReference) 17 | self._info = None # (Metadata) 18 | 19 | # initialize object with json dict 20 | super().__init__(json_dict) 21 | -------------------------------------------------------------------------------- /system/menu_entry.py: -------------------------------------------------------------------------------- 1 | from ..cw_model import CWModel 2 | 3 | 4 | class MenuEntry(CWModel): 5 | 6 | def __init__(self, json_dict=None): 7 | self.id = None # (Integer) 8 | self.menuLocation = None # *(MenuLocationReference) 9 | self.caption = None # *(String(50)) 10 | self.link = None # *(String(2000)) 11 | self.newWindowFlag = None # *(Boolean) 12 | self.locationIds = None # (Integer[]) 13 | self.origin = None # (String(2000)) 14 | self.addAllLocations = None # (Boolean) 15 | self.removeAllLocations = None # (Boolean) 16 | self.smallMenuIconId = None # (Integer) 17 | self.largeMenuIconId = None # (Integer) 18 | self._info = None # (Metadata) 19 | 20 | # initialize object with json dict 21 | super().__init__(json_dict) 22 | -------------------------------------------------------------------------------- /__init__.py: -------------------------------------------------------------------------------- 1 | import base64 2 | import json 3 | from os import path 4 | import sys 5 | 6 | sys.path.insert(0, path.dirname(path.abspath(__file__))) 7 | 8 | api_file = 'my_api.json' 9 | _api_file = path.join(path.dirname(path.abspath(__file__)), api_file) 10 | 11 | with open(_api_file) as fin: 12 | cw_api_settings = json.load(fin) 13 | API_URL = cw_api_settings['API_URL'] 14 | _cid = cw_api_settings['COMPANYID'] 15 | _pubk = cw_api_settings['PUBLICKEY'] 16 | _privk = cw_api_settings['PRIVATEKEY'] 17 | _authtoken = cw_api_settings['AUTHTOKEN'] 18 | 19 | if (_authtoken is not None) and (_authtoken != "xxxxx"): 20 | basic_auth = _authtoken 21 | 22 | else: 23 | 24 | basic_auth = base64.b64encode("{}+{}:{}".format(_cid, _pubk, _privk).encode('utf-8')) 25 | basic_auth = {'Authorization': 'Basic {}'.format(str(basic_auth, 'utf-8'))} 26 | -------------------------------------------------------------------------------- /expense/expense_type.py: -------------------------------------------------------------------------------- 1 | from ..cw_model import CWModel 2 | 3 | 4 | class ExpenseType(CWModel): 5 | 6 | def __init__(self, json_dict=None): 7 | self.id = None # (Integer) 8 | self.name = None # *(String(30)) 9 | self.amountCaption = None # *(String) 10 | self.reimbursementRate = None # (Number) 11 | self.billExpenses = None # *(Enum) 12 | self.invoiceMarkupOption = None # *(Enum) 13 | self.invoiceMarkupAmount = None # (Number) 14 | self.advancedAmountFlag = None # (Boolean) 15 | self.mileageFlag = None # (Boolean) 16 | self.quantityFlag = None # (Boolean) 17 | self.inactiveFlag = None # (Boolean) 18 | self.maxAmount = None # (Number) 19 | self._info = None # (Metadata) 20 | 21 | # initialize object with json dict 22 | super().__init__(json_dict) 23 | -------------------------------------------------------------------------------- /README.txt: -------------------------------------------------------------------------------- 1 | # ConnectPyse 2 | ConnectWise (Manage) REST API client written in Python 3.x 3 | 4 | ConnectWise RESTful API Client 5 | ----------------------- 6 | 7 | Following the layout style of the official SDKs from CW team. Classes and their API counter part classes are under 8 | their appropriate sections. Import the API class(es) you want to leverage and the model classes are imported with them. 9 | 10 | ## Setup 11 | 1. Update the your_api.json file with your API key details 12 | 13 | ## Usage 14 | 1. Import the sections you'll be using 15 | 2. Create an object from API Class 16 | 3. Leverage member methods to access features 17 | 18 | ### For example to get a Member's office phone number you would: 19 | 20 | >>> from connectpyse.system import members_api 21 | >>> members_api = MembersAPI() 22 | >>> a_member = members_api.get_member_by_id(123) 23 | >>> print(a_member.officePhone) -------------------------------------------------------------------------------- /service/survey.py: -------------------------------------------------------------------------------- 1 | from ..cw_model import CWModel 2 | 3 | 4 | class Survey(CWModel): 5 | 6 | def __init__(self, json_dict=None): 7 | self.id = None # (Integer) 8 | self.name = None # *(String(50)) 9 | self.inactiveFlag = None # (Boolean) 10 | self.headerIncludeLogoFlag = None # (Boolean) 11 | self.headerText = None # (String(4000)) 12 | self.headerTextVisibleFlag = None # (Boolean) 13 | self.footerText = None # (String(500)) 14 | self.footerTextVisibleFlag = None # (Boolean) 15 | self.thankYouText = None # (String(4000)) 16 | self.notifyWho = None # (GenericIdIdentifierReference) 17 | self.notifyWhoVisibleFlag = None # (Boolean) 18 | self.notifyMember = None # (MemberReference) 19 | self._info = None # (Metadata) 20 | 21 | # initialize object with json dict 22 | super().__init__(json_dict) 23 | -------------------------------------------------------------------------------- /setup.py: -------------------------------------------------------------------------------- 1 | from setuptools import setup 2 | 3 | 4 | def readme(): 5 | with open('README.md') as f: 6 | return f.read() 7 | 8 | 9 | setup(name='ConnectPyse', 10 | version='0.2', 11 | description='A ConnectWise API tool for the rest of us.', 12 | long_description=readme(), 13 | classifiers=[ 14 | 'Development Status :: 3 - Alpha', 15 | 'License :: OSI Approved :: MIT License', 16 | 'Programming Language :: Python :: 3.5' 17 | ], 18 | keywords='connectwise rest api', 19 | url='https://github.com/joshuamsmith/ConnectPyse', 20 | author='Joshua M Smith', 21 | author_email='saether@gmail.com', 22 | license='MIT', 23 | packages=['', 'system', 'company', 'finance', 'service'], 24 | install_requires=[ 25 | 'requests', 26 | 'ujson' 27 | ], 28 | include_package_data=True, 29 | zip_safe=False) 30 | -------------------------------------------------------------------------------- /service/board.py: -------------------------------------------------------------------------------- 1 | from ..cw_model import CWModel 2 | 3 | 4 | class Board(CWModel): 5 | 6 | def __init__(self, json_dict=None): 7 | self.id = None # (Integer) 8 | self.name = None # *(String(50)) 9 | self.locationId = None # *(Integer) 10 | self.businessUnitId = None # *(Integer) 11 | self.inactive = None # (Boolean) 12 | self.signOffTemplate = None # (ServiceSignoffReference) 13 | self.sendToContact = None # (Boolean) 14 | self.contactTemplateId = None # (Integer) 15 | self.sendToResource = None # (Boolean) 16 | self.resourceTemplateId = None # (Integer) 17 | self.projectFlag = None # (Boolean) 18 | self.showDependenciesFlag = None # (Boolean) 19 | self.showEstimatesFlag = None # (Boolean) 20 | self._info = None # (Metadata) 21 | 22 | # initialize object with json dict 23 | super().__init__(json_dict) 24 | -------------------------------------------------------------------------------- /service/ticket_note.py: -------------------------------------------------------------------------------- 1 | from ..cw_model import CWModel 2 | 3 | 4 | class TicketNote(CWModel): 5 | 6 | def __init__(self, json_dict=None): 7 | self.id = None # (Integer) 8 | self.ticketId = None # (Integer) 9 | self.text = None # (String) 10 | self.detailDescriptionFlag = None # (Boolean) 11 | self.internalAnalysisFlag = None # (Boolean) 12 | self.resolutionFlag = None # (Boolean) 13 | self.member = None # (MemberReference) 14 | self.contact = None # (ContactReference) 15 | self.customerUpdatedFlag = None # (Boolean) 16 | self.processNotifications = None # (Boolean) 17 | self.dateCreated = None # (String) 18 | self.createdBy = None # (String) 19 | self.internalFlag = None # (Boolean) 20 | self.externalFlag = None # (Boolean) 21 | self._info = None # (Metadata) 22 | 23 | # initialize object with json dict 24 | super().__init__(json_dict) 25 | -------------------------------------------------------------------------------- /time/time_entries_api.py: -------------------------------------------------------------------------------- 1 | from ..cw_controller import CWController 2 | # Class for /time/entries 3 | from . import time_entry 4 | 5 | 6 | class TimeEntriesAPI(CWController): 7 | def __init__(self): 8 | self.module_url = 'time' 9 | self.module = 'entries' 10 | self._class = time_entry.TimeEntry 11 | super().__init__() # instance gets passed to parent object 12 | 13 | def get_time_entries(self): 14 | return super()._get() 15 | 16 | def create_time_entry(self, a_time_entry): 17 | return super()._create(a_time_entry) 18 | 19 | def get_time_entries_count(self): 20 | return super()._get_count() 21 | 22 | def get_time_entry_by_id(self, time_entry_id): 23 | return super()._get_by_id(time_entry_id) 24 | 25 | def delete_time_entry_by_id(self, time_entry_id): 26 | super()._delete_by_id(time_entry_id) 27 | 28 | def replace_time_entry(self, time_entry_id): 29 | pass 30 | 31 | def update_time_entry(self, time_entry_id, key, value): 32 | return super()._update(time_entry_id, key, value) -------------------------------------------------------------------------------- /system/connectwise_hosted_setup.py: -------------------------------------------------------------------------------- 1 | from ..cw_model import CWModel 2 | 3 | 4 | class ConnectwiseHostedSetup(CWModel): 5 | 6 | def __init__(self, json_dict=None): 7 | self.id = None # (Integer) 8 | self.screenId = None # *(Integer) 9 | self.description = None # *(String(255)) 10 | self.url = None # *(String(1024)) 11 | self.type = None # *(Enum) 12 | self.origin = None # (String(50)) 13 | self.podHeight = None # (Integer) 14 | self.toolbarButtonDialogHeight = None # (Integer) 15 | self.toolbarButtonDialogWidth = None # (Integer) 16 | self.toolbarButtonText = None # *(String(50)) 17 | self.toolbarButtonToolTip = None # (String(50)) 18 | self.toolbarButtonIconDocumentId = None # (Integer) 19 | self.disabledFlag = None # (Boolean) 20 | self.createdBy = None # (String) 21 | self.dateCreated = None # (String) 22 | self._info = None # (Metadata) 23 | 24 | # initialize object with json dict 25 | super().__init__(json_dict) 26 | -------------------------------------------------------------------------------- /finance/agreement_work_type.py: -------------------------------------------------------------------------------- 1 | from ..cw_model import CWModel 2 | 3 | 4 | class AgreementWorkType(CWModel): 5 | 6 | def __init__(self, json_dict=None): 7 | self.id = None # (Integer) 8 | self.workType = None # (WorkTypeReference) 9 | self.locationId = None # (Integer) 10 | self.rateType = None # *(Enum) 11 | self.billTime = None # *(Enum) 12 | self.rate = None # (Number) 13 | self.hoursMax = None # (Number) 14 | self.hoursMin = None # (Number) 15 | self.roundBillHours = None # (Number) 16 | self.overageRate = None # (Number) 17 | self.overageRateType = None # (Enum) 18 | self.agreementLimit = None # (Number) 19 | self.site = None # (SiteReference) 20 | self.effectiveDate = None # (String) 21 | self.endingDate = None # (String) 22 | self.agreementId = None # (Integer) 23 | self.company = None # (CompanyReference) 24 | self._info = None # (Metadata) 25 | 26 | # initialize object with json dict 27 | super().__init__(json_dict) 28 | -------------------------------------------------------------------------------- /procurement/catalog_component.py: -------------------------------------------------------------------------------- 1 | from ..cw_model import CWModel 2 | 3 | 4 | class CatalogComponent(CWModel): 5 | 6 | def __init__(self, json_dict=None): 7 | # With: id(Integer) 8 | # Search: ^(\s*)(\*?)([_a-z0-9]*)\s?(\(.*$) 9 | # Replace: $1self.$3 = None # $2$4 10 | # To get: self.id = None # (Integer) 11 | self.id = None # (Integer) 12 | self.sequenceNumber = None # (Integer) 13 | self.quantity = None # *(Number) 14 | self.catalogItem = None # *(CatalogItemReference) 15 | self.hidePriceFlag = None # (Boolean) 16 | self.hideItemIdentifierFlag = None # (Boolean) 17 | self.hideDescriptionFlag = None # (Boolean) 18 | self.hideQuantityFlag = None # (Boolean) 19 | self.hideExtendedPriceFlag = None # (Boolean) 20 | self.parentCatalogItem = None # (CatalogItemReference) 21 | self.price = None # (Number) 22 | self.cost = None # (Number) 23 | self._info = None # (Metadata) 24 | 25 | # initialize object with json dict 26 | super().__init__(json_dict) 27 | -------------------------------------------------------------------------------- /service/boards_api.py: -------------------------------------------------------------------------------- 1 | from ..cw_controller import CWController 2 | # Class for /service/boards 3 | from . import board 4 | 5 | 6 | class BoardsAPI(CWController): 7 | def __init__(self): 8 | self.module_url = 'service' 9 | self.module = 'boards' 10 | self._class = board.Board 11 | super().__init__() # instance gets passed to parent object 12 | 13 | def get_boards(self): 14 | return super()._get() 15 | 16 | def create_board(self, a_entry): 17 | return super()._create(a_entry) 18 | 19 | def get_boards_count(self): 20 | return super()._get_count() 21 | 22 | def get_board_by_id(self, entry_id): 23 | return super()._get_by_id(entry_id) 24 | 25 | def delete_board_by_id(self, entry_id): 26 | super()._delete_by_id(entry_id) 27 | 28 | def replace_board(self, entry_id): 29 | pass 30 | 31 | def update_board(self, entry_id, key, value): 32 | return super()._update(entry_id, key, value) 33 | 34 | def merge_board(self, a_entry, target_entry_id): 35 | # return super()._merge(a_board, target_board_id) 36 | pass 37 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2016 Joshua M. Smith 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /procurement/product_picking_shipping_detail.py: -------------------------------------------------------------------------------- 1 | from ..cw_model import CWModel 2 | 3 | 4 | class ProductPickingShippingDetail(CWModel): 5 | 6 | def __init__(self, json_dict=None): 7 | # With: id(Integer) 8 | # Search: ^(\s*)(\*?)([_a-z0-9]*)\s?(\(.*$) 9 | # Replace: $1self.$3 = None # $2$4 10 | # To get: self.id = None # (Integer) 11 | self.id = None # (Integer) 12 | self.pickedQuantity = None # *(Integer) 13 | self.shippedQuantity = None # *(Integer) 14 | self.warehouse = None # *(WarehouseReference) 15 | self.warehouseBin = None # *(WarehouseBinReference) 16 | self.shipmentMethod = None # (ShipmentMethodReference) 17 | self.serialNumber = None # (String) 18 | self.serialNumberIds = None # (Integer[]) 19 | self.trackingNumber = None # (String) 20 | self.productItem = None # (ProductItemReference) 21 | self.lineNumber = None # (Integer) 22 | self.quantity = None # (Integer) 23 | self._info = None # (Metadata) 24 | 25 | # initialize object with json dict 26 | super().__init__(json_dict) 27 | -------------------------------------------------------------------------------- /controller_template.txt: -------------------------------------------------------------------------------- 1 | from ..cw_controller import CWController 2 | # Class for /company/configurations 3 | from . import configuration 4 | 5 | 6 | class ConfigurationsAPI(CWController): 7 | def __init__(self): 8 | self.module_url = 'company' 9 | self.module = 'configurations' 10 | self._class = configuration.Configuration 11 | super().__init__() # instance gets passed to parent object 12 | 13 | def get_configurations(self): 14 | return super()._get() 15 | 16 | def create_configuration(self, a_configuration): 17 | return super()._create(a_configuration) 18 | 19 | def get_configurations_count(self): 20 | return super()._get_count() 21 | 22 | def get_configuration_by_id(self, configuration_id): 23 | return super()._get_by_id(configuration_id) 24 | 25 | def delete_configuration_by_id(self, configuration_id): 26 | super()._delete_by_id(configuration_id) 27 | 28 | def replace_configuration(self, configuration_id): 29 | pass 30 | 31 | def update_configuration(self, configuration_id, key, value): 32 | return super()._update(configuration_id, key, value) -------------------------------------------------------------------------------- /procurement/product_component.py: -------------------------------------------------------------------------------- 1 | from ..cw_model import CWModel 2 | 3 | 4 | class ProductComponent(CWModel): 5 | 6 | def __init__(self, json_dict=None): 7 | # With: id(Integer) 8 | # Search: ^(\s*)(\*?)([_a-z0-9]*)\s?(\(.*$) 9 | # Replace: $1self.$3 = None # $2$4 10 | # To get: self.id = None # (Integer) 11 | self.id = None # (Integer) 12 | self.sequenceNumber = None # (Integer) 13 | self.quantity = None # *(Number) 14 | self.catalogItem = None # *(CatalogItemReference) 15 | self.hidePriceFlag = None # (Boolean) 16 | self.hideItemIdentifierFlag = None # (Boolean) 17 | self.hideDescriptionFlag = None # (Boolean) 18 | self.hideQuantityFlag = None # (Boolean) 19 | self.vendor = None # (CompanyReference) 20 | self.parentProductItem = None # (ProductItemReference) 21 | self.productItem = None # (ProductItemReference) 22 | self.price = None # (Number) 23 | self.cost = None # (Number) 24 | self._info = None # (Metadata) 25 | 26 | # initialize object with json dict 27 | super().__init__(json_dict) 28 | -------------------------------------------------------------------------------- /time/charge_code.py: -------------------------------------------------------------------------------- 1 | from ..cw_model import CWModel 2 | 3 | 4 | class ChargeCode(CWModel): 5 | 6 | def __init__(self, json_dict=None): 7 | # With: id(Integer) 8 | # Search: ^(\s*)(\*?)([_a-z0-9]*)\s?(\(.*$) 9 | # Replace: $1self.$3 = None # $2$4 10 | # To get: self.id = None # (Integer) 11 | self.id = None # (Integer) 12 | self.name = None # *(String(50)) 13 | self.company = None # *(CompanyReference) 14 | self.location = None # (SystemLocationReference) 15 | self.department = None # (SystemDepartmentReference) 16 | self.billTime = None # (Enum) 17 | self.expenseEntryFlag = None # (Boolean) 18 | self.allowAllExpenseTypeFlag = None # (Boolean) 19 | self.timeEntryFlag = None # (Boolean) 20 | self.workType = None # *(WorkTypeReference) 21 | self.workRole = None # (WorkRoleReference) 22 | self.integrationXref = None # (String(50)) 23 | self.expenseTypeIds = None # (Integer[]) 24 | self._info = None # (Metadata) 25 | 26 | # initialize object with json dict 27 | super().__init__(json_dict) 28 | -------------------------------------------------------------------------------- /finance/accounting_batch.py: -------------------------------------------------------------------------------- 1 | from ..cw_model import CWModel 2 | 3 | 4 | class AccountingBatch(CWModel): 5 | 6 | def __init__(self, json_dict=None): 7 | self.thruDate = None # (String) 8 | self.transactionsClosedDate = None # (String) 9 | self.locationId = None # (Integer) 10 | self.summarizeInvoices = None # (Integer) 11 | self.includedInvoiceIds = None # (Integer[]) 12 | self.includedExpenseIds = None # (Integer[]) 13 | self.includedProductIds = None # (Integer[]) 14 | self.excludedInvoiceIds = None # (Integer[]) 15 | self.excludedExpenseIds = None # (Integer[]) 16 | self.excludedProductIds = None # (Integer[]) 17 | self.id = None # (Integer) 18 | self.batchIdentifier = None # *(String(50)) 19 | self.exportInvoicesFlag = None # (Boolean) 20 | self.exportExpensesFlag = None # (Boolean) 21 | self.exportProductsFlag = None # (Boolean) 22 | self.closedFlag = None # (Boolean) 23 | self._info = None # (Metadata) 24 | 25 | # initialize object with json dict 26 | super().__init__(json_dict) 27 | -------------------------------------------------------------------------------- /system/members_api.py: -------------------------------------------------------------------------------- 1 | from ..cw_controller import CWController 2 | # Class for /system/members 3 | from system import member 4 | 5 | 6 | class MembersAPI(CWController): 7 | def __init__(self): 8 | self.module_url = 'system' 9 | self.module = 'members' 10 | self._class = member.Member 11 | super().__init__() # instance gets passed to parent object 12 | 13 | def get_members(self): 14 | return super()._get() 15 | 16 | def create_member(self, a_type): 17 | return super()._create(a_type) 18 | 19 | def get_members_count(self): 20 | return super()._get_count() 21 | 22 | def get_member_by_id(self, type_id): 23 | return super()._get_by_id(type_id) 24 | 25 | def delete_member_by_id(self, type_id): 26 | super()._delete_by_id(type_id) 27 | 28 | def replace_member(self, type_id): 29 | pass 30 | 31 | def update_member(self, type_id, key, value): 32 | return super()._update(type_id, key, value) 33 | 34 | def merge_member(self, a_type, target_type_id): 35 | # return super()._merge(a_type, target_type_id) 36 | pass 37 | -------------------------------------------------------------------------------- /time/activity_stopwatch.py: -------------------------------------------------------------------------------- 1 | from ..cw_model import CWModel 2 | 3 | 4 | class ActivityStopwatch(CWModel): 5 | 6 | def __init__(self, json_dict=None): 7 | self._info = None # (Metadata) 8 | self.activityId = None # *(Integer) 9 | self.activityMobileGuid = None # (Guid) 10 | self.agreement = None # (AgreementReference) 11 | self.billableOption = None # (Enum) 12 | self.businessUnitId = None # (Integer) 13 | self.dateEntered = None # (String) 14 | self.endTime = None # (String) 15 | self.id = None # (Integer) 16 | self.internalNotes = None # (String) 17 | self.locationId = None # (Integer) 18 | self.member = None # *(MemberReference) 19 | self.mobileGuid = None # (Guid) 20 | self.notes = None # (String(4000)) 21 | self.startTime = None # (String) 22 | self.status = None # *(Enum) 23 | self.totalPauseTime = None # (Integer) 24 | self.workRole = None # (WorkRoleReference) 25 | self.workType = None # (WorkTypeReference) 26 | 27 | # initialize object with json dict 28 | super().__init__(json_dict) 29 | -------------------------------------------------------------------------------- /time/schedule_stopwatch.py: -------------------------------------------------------------------------------- 1 | from ..cw_model import CWModel 2 | 3 | 4 | class ScheduleStopwatch(CWModel): 5 | 6 | def __init__(self, json_dict=None): 7 | self._info = None # (Metadata) 8 | self.agreement = None # (AgreementReference) 9 | self.billableOption = None # (Enum) 10 | self.businessUnitId = None # (Integer) 11 | self.dateEntered = None # (String) 12 | self.endTime = None # (String) 13 | self.id = None # (Integer) 14 | self.internalNotes = None # (String) 15 | self.locationId = None # (Integer) 16 | self.member = None # *(MemberReference) 17 | self.mobileGuid = None # (Guid) 18 | self.notes = None # (String(4000)) 19 | self.scheduleId = None # *(Integer) 20 | self.scheduleMobileGuid = None # (Guid) 21 | self.startTime = None # (String) 22 | self.status = None # *(Enum) 23 | self.totalPauseTime = None # (Integer) 24 | self.workRole = None # (WorkRoleReference) 25 | self.workType = None # (WorkTypeReference) 26 | 27 | # initialize object with json dict 28 | super().__init__(json_dict) 29 | -------------------------------------------------------------------------------- /company/configurations_api.py: -------------------------------------------------------------------------------- 1 | from ..cw_controller import CWController 2 | # Class for /company/configurations 3 | from . import configuration 4 | 5 | 6 | class ConfigurationsAPI(CWController): 7 | def __init__(self): 8 | self.module_url = 'company' 9 | self.module = 'configurations' 10 | self._class = configuration.Configuration 11 | super().__init__() # instance gets passed to parent object 12 | 13 | def get_configurations(self): 14 | return super()._get() 15 | 16 | def create_configuration(self, a_configuration): 17 | return super()._create(a_configuration) 18 | 19 | def get_configurations_count(self): 20 | return super()._get_count() 21 | 22 | def get_configuration_by_id(self, configuration_id): 23 | return super()._get_by_id(configuration_id) 24 | 25 | def delete_configuration_by_id(self, configuration_id): 26 | super()._delete_by_id(configuration_id) 27 | 28 | def replace_configuration(self, configuration_id): 29 | pass 30 | 31 | def update_configuration(self, configuration_id, key, value): 32 | return super()._update(configuration_id, key, value) 33 | 34 | -------------------------------------------------------------------------------- /procurement/shipment_methods_api.py: -------------------------------------------------------------------------------- 1 | from ..cw_controller import CWController 2 | # Class for /procurement/shipmentmethods 3 | from . import shipment_method 4 | 5 | 6 | class ShipmentMethodsAPI(CWController): 7 | def __init__(self): 8 | self.module_url = 'procurement' 9 | self.module = 'shipmentmethods' 10 | self._class = shipment_method.ShipmentMethod 11 | super().__init__() # instance gets passed to parent object 12 | 13 | def get_shipment_methods(self): 14 | return super()._get() 15 | 16 | def create_shipment_method(self, a_shipment_method): 17 | return super()._create(a_shipment_method) 18 | 19 | def get_shipment_methods_count(self): 20 | return super()._get_count() 21 | 22 | def get_shipment_method_by_id(self, shipment_method_id): 23 | return super()._get_by_id(shipment_method_id) 24 | 25 | def delete_shipment_method_by_id(self, shipment_method_id): 26 | super()._delete_by_id(shipment_method_id) 27 | 28 | def replace_shipment_method(self, shipment_method_id): 29 | pass 30 | 31 | def update_shipment_method(self, shipment_method_id, key, value): 32 | return super()._update(shipment_method_id, key, value) -------------------------------------------------------------------------------- /expense/expense_entry.py: -------------------------------------------------------------------------------- 1 | from ..cw_model import CWModel 2 | 3 | 4 | class ExpenseEntry(CWModel): 5 | 6 | def __init__(self, json_dict=None): 7 | self.id = None # (Integer) 8 | self.company = None # **(CompanyReference) 9 | self.chargeToId = None # (Integer) 10 | self.chargeToType = None # **(Enum) 11 | self.type = None # *(ExpenseTypeReference) 12 | self.member = None # (MemberReference) 13 | self.paymentMethod = None # (PaymentMethodReference) 14 | self.classification = None # (ClassificationReference) 15 | self.amount = None # *(Number) 16 | self.billableOption = None # *(Enum) 17 | self.date = None # *(String) 18 | self.locationId = None # (Integer) 19 | self.businessUnitId = None # (Integer) 20 | self.notes = None # (String) 21 | self.agreement = None # (AgreementReference) 22 | self.invoiceAmount = None # (Number) 23 | self.taxes = None # (ExpenseTax[]) 24 | self.invoice = None # (InvoiceReference) 25 | self._info = None # (Metadata) 26 | 27 | # initialize object with json dict 28 | super().__init__(json_dict) 29 | -------------------------------------------------------------------------------- /company/companies_api.py: -------------------------------------------------------------------------------- 1 | from ..cw_controller import CWController 2 | # Class for /company/companies 3 | from . import company 4 | 5 | 6 | class CompaniesAPI(CWController): 7 | def __init__(self): 8 | self.module_url = 'company' 9 | self.module = 'companies' 10 | self._class = company.Company 11 | super().__init__() # instance gets passed to parent object 12 | 13 | def get_companies(self): 14 | return super()._get() 15 | 16 | def create_company(self, a_company): 17 | return super()._create(a_company) 18 | 19 | def get_companies_count(self): 20 | return super()._get_count() 21 | 22 | def get_company_by_id(self, company_id): 23 | return super()._get_by_id(company_id) 24 | 25 | def delete_company_by_id(self, company_id): 26 | super()._delete_by_id(company_id) 27 | 28 | def replace_company(self, company_id): 29 | pass 30 | 31 | def update_company(self, company_id, key, value): 32 | return super()._update(company_id, key, value) 33 | 34 | def merge_company(self, a_company, target_company_id): 35 | # return super()._merge(a_company, target_company_id) 36 | pass 37 | -------------------------------------------------------------------------------- /system/callbacks_api.py: -------------------------------------------------------------------------------- 1 | from ..cw_controller import CWController 2 | # Class for /system/callbacks 3 | from connectpyse.system import callback 4 | 5 | 6 | class CallbacksAPI(CWController): 7 | def __init__(self): 8 | self.module_url = 'system' 9 | self.module = 'callbacks' 10 | self._class = callback.Callback 11 | super().__init__() # instance gets passed to parent object 12 | 13 | def get_callbacks(self): 14 | return super()._get() 15 | 16 | def create_callback(self, a_entry): 17 | return super()._create(a_entry) 18 | 19 | def get_callbacks_count(self): 20 | return super()._get_count() 21 | 22 | def get_callback_by_id(self, entry_id): 23 | return super()._get_by_id(entry_id) 24 | 25 | def delete_callback_by_id(self, entry_id): 26 | super()._delete_by_id(entry_id) 27 | 28 | def replace_callback(self, entry_id): 29 | pass 30 | 31 | def update_callback(self, entry_id, key, value): 32 | return super()._update(entry_id, key, value) 33 | 34 | def merge_callback(self, a_entry, target_entry_id): 35 | # return super()._merge(a_callback, target_callback_id) 36 | pass 37 | -------------------------------------------------------------------------------- /schedule/schedule_types_api.py: -------------------------------------------------------------------------------- 1 | from ..cw_controller import CWController 2 | # Class for /schedule/types 3 | from schedule import schedule_type 4 | 5 | 6 | class ScheduleTypesAPI(CWController): 7 | def __init__(self): 8 | self.module_url = 'schedule' 9 | self.module = 'types' 10 | self._class = schedule_type.ScheduleType 11 | super().__init__() # instance gets passed to parent object 12 | 13 | def get_schedule_types(self): 14 | return super()._get() 15 | 16 | def create_schedule_type(self, a_type): 17 | return super()._create(a_type) 18 | 19 | def get_schedule_types_count(self): 20 | return super()._get_count() 21 | 22 | def get_schedule_type_by_id(self, type_id): 23 | return super()._get_by_id(type_id) 24 | 25 | def delete_schedule_type_by_id(self, type_id): 26 | super()._delete_by_id(type_id) 27 | 28 | def replace_schedule_type(self, type_id): 29 | pass 30 | 31 | def update_schedule_type(self, type_id, key, value): 32 | return super()._update(type_id, key, value) 33 | 34 | def merge_schedule_type(self, a_type, target_type_id): 35 | # return super()._merge(a_schedule_type, target_schedule_type_id) 36 | pass 37 | -------------------------------------------------------------------------------- /company/company_site.py: -------------------------------------------------------------------------------- 1 | from ..cw_model import CWModel 2 | 3 | 4 | class CompanySite(CWModel): 5 | 6 | def __init__(self, json_dict=None): 7 | self.id = None # (Integer) 8 | self.name = None # *(String(50)) 9 | self.addressLine1 = None # (String(50)) 10 | self.addressLine2 = None # (String(50)) 11 | self.city = None # (String(50)) 12 | self.state = None # (String(50)) 13 | self.zip = None # (String(12)) 14 | self.country = None # (CountryReference) 15 | self.phoneNumber = None # (String(30)) 16 | self.faxNumber = None # (String(30)) 17 | self.taxCodeId = None # (Integer) 18 | self.expenseReimbursement = None # (Number) 19 | self.primaryAddressFlag = None # (Boolean) 20 | self.defaultShippingFlag = None # (Boolean) 21 | self.defaultBillingFlag = None # (Boolean) 22 | self.defaultMailingFlag = None # (Boolean) 23 | self.calendar = None # (CalendarReference) 24 | self.timeZone = None # (TimeZoneReference) 25 | self.company = None # (CompanyReference) 26 | self._info = None # (Metadata) 27 | 28 | # initialize object with json dict 29 | super().__init__(json_dict) 30 | -------------------------------------------------------------------------------- /schedule/schedule_entries_api.py: -------------------------------------------------------------------------------- 1 | from ..cw_controller import CWController 2 | # Class for /schedule/entries 3 | from schedule import schedule_entry 4 | 5 | 6 | class ScheduleEntriesAPI(CWController): 7 | def __init__(self): 8 | self.module_url = 'schedule' 9 | self.module = 'entries' 10 | self._class = schedule_entry.ScheduleEntry 11 | super().__init__() # instance gets passed to parent object 12 | 13 | def get_schedule_entries(self): 14 | return super()._get() 15 | 16 | def create_schedule_entry(self, a_entry): 17 | return super()._create(a_entry) 18 | 19 | def get_schedule_entries_count(self): 20 | return super()._get_count() 21 | 22 | def get_schedule_entry_by_id(self, entry_id): 23 | return super()._get_by_id(entry_id) 24 | 25 | def delete_schedule_entry_by_id(self, entry_id): 26 | super()._delete_by_id(entry_id) 27 | 28 | def replace_schedule_entry(self, entry_id): 29 | pass 30 | 31 | def update_schedule_entry(self, entry_id, key, value): 32 | return super()._update(entry_id, key, value) 33 | 34 | def merge_schedule_entry(self, a_entry, target_entry_id): 35 | # return super()._merge(a_schedule_entry, target_schedule_entry_id) 36 | pass 37 | -------------------------------------------------------------------------------- /company/contact_communications_api.py: -------------------------------------------------------------------------------- 1 | from ..cw_controller import CWController 2 | # Class for /company/contacts/{id}/communications 3 | from connectpyse.company import contact_communication 4 | 5 | 6 | class ContactCommunicationsAPI(CWController): 7 | def __init__(self, contact_id): 8 | self.module_url = 'company' 9 | self.module = 'contacts/{}/communications'.format(contact_id) 10 | self._class = contact_communication.ContactCommunication 11 | super().__init__() # instance gets passed to parent object 12 | 13 | def get_contact_communications(self): 14 | return super()._get() 15 | 16 | def create_contact_communication(self, a_contact_communication): 17 | return super()._create(a_contact_communication) 18 | 19 | def get_contact_communications_count(self): 20 | return super()._get_count() 21 | 22 | def get_contact_communication_by_id(self, item_id): 23 | return super()._get_by_id(item_id) 24 | 25 | def delete_contact_communication_by_id(self, item_id): 26 | super()._delete_by_id(item_id) 27 | 28 | def replace_contact_communication(self, item_id): 29 | pass 30 | 31 | def update_contact_communication(self, item_id, key, value): 32 | return super()._update(item_id, key, value) 33 | -------------------------------------------------------------------------------- /schedule/schedule_entry.py: -------------------------------------------------------------------------------- 1 | from cw_model import CWModel 2 | 3 | 4 | class ScheduleEntry(CWModel): 5 | 6 | def __init__(self, json_dict=None): 7 | self.id = None # (Integer) 8 | self.objectId = None # (Integer) 9 | self.name = None # (String(250)) 10 | self.member = None # *(MemberReference) 11 | self.where = None # (ServiceLocationReference) 12 | self.dateStart = None # (String) 13 | self.dateEnd = None # (String) 14 | self.reminder = None # (ReminderReference) 15 | self.status = None # (ScheduleStatusReference) 16 | self.type = None # *(ScheduleTypeReference) 17 | self.span = None # (ScheduleSpanReference) 18 | self.doneFlag = None # (Boolean) 19 | self.acknowledgedFlag = None # (Boolean) 20 | self.ownerFlag = None # (Boolean) 21 | self.allowScheduleConflictsFlag = None # (Boolean) 22 | self.addMemberToProjectFlag = None # (Boolean) 23 | self.projectRoleId = None # (Integer) 24 | self.mobileGuid = None # (Guid) 25 | self.closeDate = None # (String) 26 | self.hours = None # (Number) 27 | self._info = None # (Metadata) 28 | 29 | # initialize object with json dict 30 | super().__init__(json_dict) 31 | -------------------------------------------------------------------------------- /schedule/schedule_statuses_api.py: -------------------------------------------------------------------------------- 1 | from ..cw_controller import CWController 2 | # Class for /schedule/statuses 3 | from connectpyse.schedule import schedule_status 4 | 5 | 6 | class ScheduleStatusesAPI(CWController): 7 | def __init__(self): 8 | self.module_url = 'schedule' 9 | self.module = 'statuses' 10 | self._class = schedule_status.ScheduleStatus 11 | super().__init__() # instance gets passed to parent object 12 | 13 | def get_schedule_statuses(self): 14 | return super()._get() 15 | 16 | def create_schedule_status(self, a_status): 17 | return super()._create(a_status) 18 | 19 | def get_schedule_statuses_count(self): 20 | return super()._get_count() 21 | 22 | def get_schedule_status_by_id(self, status_id): 23 | return super()._get_by_id(status_id) 24 | 25 | def delete_schedule_status_by_id(self, status_id): 26 | super()._delete_by_id(status_id) 27 | 28 | def replace_schedule_status(self, status_id): 29 | pass 30 | 31 | def update_schedule_status(self, status_id, key, value): 32 | return super()._update(status_id, key, value) 33 | 34 | def merge_schedule_status(self, a_status, target_status_id): 35 | # return super()._merge(a_schedule_status, target_schedule_status_id) 36 | pass 37 | -------------------------------------------------------------------------------- /company/company_types_api.py: -------------------------------------------------------------------------------- 1 | from ..cw_controller import CWController 2 | # Class for /company/companies/types 3 | from connectpyse.company import company_type 4 | 5 | 6 | class CompanyTypeAPI(CWController): 7 | def __init__(self): 8 | self.module_url = 'company' 9 | self.module = 'companies/types' 10 | self._class = company_type.CompanyType 11 | super().__init__() # instance gets passed to parent object 12 | 13 | def get_company_types(self): 14 | return super()._get() 15 | 16 | def create_company_type(self, a_company_type): 17 | return super()._create(a_company_type) 18 | 19 | def get_company_types_count(self): 20 | return super()._get_count() 21 | 22 | def get_company_type_by_id(self, company_type_id): 23 | return super()._get_by_id(company_type_id) 24 | 25 | def delete_company_type_by_id(self, company_type_id): 26 | super()._delete_by_id(company_type_id) 27 | 28 | def replace_company_type(self, company_type_id): 29 | pass 30 | 31 | def update_company_type(self, company_type_id, key, value): 32 | return super()._update(company_type_id, key, value) 33 | 34 | def merge_company_type(self, a_company_type, target_company_type_id): 35 | # return super()._merge(a_company_type, target_company_type_id) 36 | pass 37 | -------------------------------------------------------------------------------- /system/user_defined_field.py: -------------------------------------------------------------------------------- 1 | from ..cw_model import CWModel 2 | 3 | 4 | class UserDefinedField(CWModel): 5 | 6 | def __init__(self, json_dict=None): 7 | self.id = None # (Integer) 8 | self.podId = None # *(Integer) 9 | self.caption = None # *(String(25)) 10 | self.sequenceNumber = None # *(Integer) 11 | self.helpText = None # (String(1000)) 12 | self.fieldTypeIdentifier = None # *(Enum) 13 | self.numberDecimals = None # (Integer) 14 | self.entryTypeIdentifier = None # (Enum) 15 | self.requiredFlag = None # (Boolean) 16 | self.displayOnScreenFlag = None # (Boolean) 17 | self.readOnlyFlag = None # (Boolean) 18 | self.listViewFlag = None # (Boolean) 19 | self.buttonUrl = None # (String(1000)) 20 | self.options = None # (UserDefinedFieldOption[]) 21 | self.businessUnitIds = None # (Integer[]) 22 | self.locationIds = None # (Integer[]) 23 | self.addAllBusinessUnits = None # (Boolean) 24 | self.removeAllBusinessUnits = None # (Boolean) 25 | self.addAllLocations = None # (Boolean) 26 | self.removeAllLocations = None # (Boolean) 27 | self.dateCreated = None # (String) 28 | self._info = None # (Metadata) 29 | 30 | # initialize object with json dict 31 | super().__init__(json_dict) 32 | -------------------------------------------------------------------------------- /company/company_statuses_api.py: -------------------------------------------------------------------------------- 1 | from ..cw_controller import CWController 2 | # Class for /company/companies/statuses 3 | from connectpyse.company import company_status 4 | 5 | 6 | class CompanyStatusAPI(CWController): 7 | def __init__(self): 8 | self.module_url = 'company' 9 | self.module = 'companies/statuses' 10 | self._class = company_status.CompanyStatus 11 | super().__init__() # instance gets passed to parent object 12 | 13 | def get_company_statuses(self): 14 | return super()._get() 15 | 16 | def create_company_status(self, a_company_status): 17 | return super()._create(a_company_status) 18 | 19 | def get_company_statuses_count(self): 20 | return super()._get_count() 21 | 22 | def get_company_status_by_id(self, company_status_id): 23 | return super()._get_by_id(company_status_id) 24 | 25 | def delete_company_status_by_id(self, company_status_id): 26 | super()._delete_by_id(company_status_id) 27 | 28 | def replace_company_status(self, company_status_id): 29 | pass 30 | 31 | def update_company_status(self, company_id, key, value): 32 | return super()._update(company_id, key, value) 33 | 34 | def merge_company_status(self, a_company_status, target_company_status_id): 35 | # return super()._merge(a_company_status, target_company_status_id) 36 | pass 37 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # PLEASE NOTE: THIS PROJECT IS NO LONGER MAINTAINED - please check out one of the forks!! # 2 | 3 | # ConnectPyse 4 | ConnectWise (Manage) REST API client written in Python 3.x 5 | 6 | ConnectWise RESTful API Client 7 | ----------------------- 8 | 9 | Following the layout style of the official SDKs from CW team. Classes and their API counter part classes are under 10 | their appropriate sections. Import the API class(es) you want to leverage and the model classes are imported with them. 11 | 12 | ## Setup 13 | 1. Copy your_api.json to new my_api.json file and update with your API key details 14 | 15 | ## Usage 16 | 1. Import the sections you'll be using 17 | 2. Create an object from API Class 18 | 3. Leverage member methods to access features 19 | 20 | ### For example to get a Member's office phone number you would: 21 | 22 | >>> from connectpyse.system import members_api 23 | >>> members_api = MembersAPI() 24 | >>> a_member = members_api.get_member_by_id(123) 25 | >>> print(a_member.officePhone) 26 | 27 | 28 | ### Installation notes 29 | The uJSON dependency needs cl.exe to be added to your path. This is a part of Visual Studio 30 | For VS 2015, add the following folder to PATH C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\bin 31 | If you receive the error "fatal error LNK1158: cannot run 'rc.exe'", add this to PATH: C:\Program Files (x86)\Windows Kits\8.0\bin\x86 32 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # Byte-compiled / optimized / DLL files 2 | __pycache__/ 3 | *.py[cod] 4 | *$py.class 5 | 6 | # C extensions 7 | *.so 8 | 9 | # Distribution / packaging 10 | .Python 11 | env/ 12 | build/ 13 | develop-eggs/ 14 | dist/ 15 | downloads/ 16 | eggs/ 17 | .eggs/ 18 | lib/ 19 | lib64/ 20 | parts/ 21 | sdist/ 22 | var/ 23 | *.egg-info/ 24 | .installed.cfg 25 | *.egg 26 | 27 | # PyInstaller 28 | # Usually these files are written by a python script from a template 29 | # before PyInstaller builds the exe, so as to inject date/other infos into it. 30 | *.manifest 31 | *.spec 32 | 33 | # Installer logs 34 | pip-log.txt 35 | pip-delete-this-directory.txt 36 | 37 | # Unit test / coverage reports 38 | htmlcov/ 39 | .tox/ 40 | .coverage 41 | .coverage.* 42 | .cache 43 | nosetests.xml 44 | coverage.xml 45 | *,cover 46 | .hypothesis/ 47 | 48 | # Translations 49 | *.mo 50 | *.pot 51 | 52 | # Django stuff: 53 | *.log 54 | local_settings.py 55 | 56 | # Flask stuff: 57 | instance/ 58 | .webassets-cache 59 | 60 | # Scrapy stuff: 61 | .scrapy 62 | 63 | # Sphinx documentation 64 | docs/_build/ 65 | 66 | # PyBuilder 67 | target/ 68 | 69 | # IPython Notebook 70 | .ipynb_checkpoints 71 | 72 | # pyenv 73 | .python-version 74 | 75 | # celery beat schedule file 76 | celerybeat-schedule 77 | 78 | # dotenv 79 | .env 80 | 81 | # virtualenv 82 | venv/ 83 | ENV/ 84 | 85 | # Spyder project settings 86 | .spyderproject 87 | 88 | # Rope project settings 89 | .ropeproject 90 | 91 | #custom 92 | .idea/ 93 | my_api.json 94 | -------------------------------------------------------------------------------- /sales/activity.py: -------------------------------------------------------------------------------- 1 | from ..cw_model import CWModel 2 | 3 | 4 | class Activity(CWModel): 5 | 6 | def __init__(self, json_dict=None): 7 | self.id = None # (Integer) 8 | self.name = None # *(String(100)) 9 | self.type = None # (ActivityTypeReference) 10 | self.company = None # (CompanyReference) 11 | self.contact = None # (ContactReference) 12 | self.phoneNumber = None # (String(30)) 13 | self.email = None # (String(250)) 14 | self.status = None # (ActivityStatusReference) 15 | self.opportunity = None # (OpportunityReference) 16 | self.ticket = None # (TicketReference) 17 | self.agreement = None # (AgreementReference) 18 | self.campaign = None # (CampaignReference) 19 | self.notes = None # (String) 20 | self.dateStart = None # (String) 21 | self.dateEnd = None # (String) 22 | self.assignedBy = None # (MemberReference) 23 | self.assignTo = None # *(MemberReference) 24 | self.scheduleStatus = None # (ScheduleStatusReference) 25 | self.reminder = None # (ReminderReference) 26 | self.where = None # (ServiceLocationReference) 27 | self.notifyFlag = None # (Boolean) 28 | self.mobileGuid = None # (Guid) 29 | self._info = None # (Metadata) 30 | self.customFields = None # (CustomFieldValue[]) 31 | 32 | # initialize object with json dict 33 | super().__init__(json_dict) 34 | -------------------------------------------------------------------------------- /company/company_management_summary_reports_api.py: -------------------------------------------------------------------------------- 1 | from ..cw_controller import CWController 2 | # Class for /company/companies/{id}/managementSummaryReports 3 | from ConnectPyse.company import company_management_summary_reports 4 | 5 | 6 | class CompanyManagementSummaryReportsAPI(CWController): 7 | def __init__(self, company_id): 8 | self.module_url = 'company' 9 | self.module = 'companies/{}/managementSummaryReports'.format(company_id) 10 | self._class = company_management_summary_reports.CompanyManagementSummaryReport 11 | super().__init__() # instance gets passed to parent object 12 | 13 | def get_managementSummaryReports(self): 14 | return super()._get() 15 | 16 | def create_managementSummaryReport(self, a_managementSummaryReport): 17 | return super()._create(a_managementSummaryReport) 18 | 19 | def get_managementSummaryReports_count(self): 20 | return super()._get_count() 21 | 22 | def get_managementSummaryReport_by_id(self, managementSummaryReport_id): 23 | return super()._get_by_id(managementSummaryReport_id) 24 | 25 | def delete_managementSummaryReport_by_id(self, managementSummaryReport_id): 26 | super()._delete_by_id(managementSummaryReport_id) 27 | 28 | def replace_managementSummaryReport(self, managementSummaryReport_id): 29 | pass 30 | 31 | def update_managementSummaryReport(self, managementSummaryReport_id, key, value): 32 | return super()._update(managementSummaryReport_id, key, value) 33 | -------------------------------------------------------------------------------- /schedule/schedule_reminder_times_api.py: -------------------------------------------------------------------------------- 1 | from ..cw_controller import CWController 2 | # Class for /schedule/reminderTimes 3 | from connectpyse.schedule import schedule_reminder_time 4 | 5 | ''' not available until 2017.3 ''' 6 | class ScheduleReminderTimesAPI(CWController): 7 | def __init__(self): 8 | self.module_url = 'schedule' 9 | self.module = 'reminderTimes' 10 | self._class = schedule_reminder_time.ScheduleReminderTime 11 | super().__init__() # instance gets passed to parent object 12 | 13 | def get_schedule_reminder_times(self): 14 | return super()._get() 15 | 16 | def create_schedule_reminder_time(self, a_reminder_time): 17 | return super()._create(a_reminder_time) 18 | 19 | def get_schedule_reminder_times_count(self): 20 | return super()._get_count() 21 | 22 | def get_schedule_reminder_time_by_id(self, reminder_time_id): 23 | return super()._get_by_id(reminder_time_id) 24 | 25 | def delete_schedule_reminder_time_by_id(self, reminder_time_id): 26 | super()._delete_by_id(reminder_time_id) 27 | 28 | def replace_schedule_reminder_time(self, reminder_time_id): 29 | pass 30 | 31 | def update_schedule_reminder_time(self, reminder_time_id, key, value): 32 | return super()._update(reminder_time_id, key, value) 33 | 34 | def merge_schedule_reminder_time(self, a_reminder_time, target_reminder_time_id): 35 | # return super()._merge(a_schedule_reminder_time, target_schedule_reminder_time_id) 36 | pass 37 | -------------------------------------------------------------------------------- /time/ticket_stopwatch.py: -------------------------------------------------------------------------------- 1 | from ..cw_model import CWModel 2 | 3 | 4 | class TicketStopwatch(CWModel): 5 | 6 | def __init__(self, json_dict=None): 7 | self._info = None # (Metadata) 8 | self.agreement = None # (AgreementReference) 9 | self.billableOption = None # (Enum) 10 | self.businessUnitId = None # (Integer) 11 | self.dateEntered = None # (String) 12 | self.endTime = None # (String) 13 | self.id = None # (Integer) 14 | self.internalNotes = None # (String) 15 | self.locationId = None # (Integer) 16 | self.member = None # *(MemberReference) 17 | self.mobileGuid = None # (Guid) 18 | self.notes = None # (String(4000)) 19 | self.serviceStatus = None # (ServiceStatusReference) 20 | self.startTime = None # (String) 21 | self.status = None # *(Enum) 22 | self.ticket = None # *(TicketReference) 23 | self.ticketMobileGuid = None # (Guid) 24 | self.totalPauseTime = None # (Integer) 25 | self.workRole = None # (WorkRoleReference) 26 | self.workType = None # (WorkTypeReference) 27 | self.showNotesInDiscussionFlag = None # (Boolean) 28 | self.showNotesInInternalFlag = None # (Boolean) 29 | self.showNotesInResolutionFlag = None # (Boolean) 30 | self.emailNotesToContactFlag = None # (Boolean) 31 | self.emailNotesToResourcesFlag = None # (Boolean) 32 | 33 | # initialize object with json dict 34 | super().__init__(json_dict) 35 | -------------------------------------------------------------------------------- /marketing/campaign.py: -------------------------------------------------------------------------------- 1 | from ..cw_model import CWModel 2 | 3 | 4 | class Campaign(CWModel): 5 | 6 | def __init__(self, json_dict=None): 7 | self.id = None # (Integer) 8 | self.name = None # *(String(50)) 9 | self.type = None # *(CampaignTypeReference) 10 | self.subType = None # *(CampaignSubTypeReference) 11 | self.status = None # (CampaignStatusReference) 12 | self.startDate = None # *(String) 13 | self.endDate = None # (String) 14 | self.locationId = None # (Integer) 15 | self.member = None # (MemberReference) 16 | self.inactive = None # (Boolean) 17 | self.inactiveDaysAfterEnd = None # (Integer) 18 | self.notes = None # (String) 19 | self.defaultGroup = None # (GroupReference) 20 | self.marketingManagerDefaultTrackId = None # (Integer) 21 | self.opportunityDefaultTrackId = None # (Integer) 22 | self.impressions = None # (Integer) 23 | self.budgetRevenue = None # (Number) 24 | self.budgetCost = None # (Number) 25 | self.actualCost = None # (Number) 26 | self.budgetGrossMargin = None # (Number) 27 | self.budgetROI = None # (Number) 28 | self.actualRevenue = None # (Number) 29 | self.actualGrossMargin = None # (Number) 30 | self.actualROI = None # (Number) 31 | self.emailsSent = None # (Integer) 32 | self._info = None # (Metadata) 33 | 34 | # initialize object with json dict 35 | super().__init__(json_dict) 36 | -------------------------------------------------------------------------------- /procurement/catalog_item.py: -------------------------------------------------------------------------------- 1 | from ..cw_model import CWModel 2 | 3 | 4 | class CatalogItem(CWModel): 5 | 6 | def __init__(self, json_dict=None): 7 | self.id = None # (Integer) 8 | self.identifier = None # *(String(30)) 9 | self.description = None # *(String(50)) 10 | self.inactiveFlag = None # (Boolean) 11 | self.subcategory = None # *(ProductSubCategoryReference) 12 | self.type = None # *(ProductTypeReference) 13 | self.productClass = None # *(Enum) 14 | self.serializedFlag = None # (Boolean) 15 | self.serializedCostFlag = None # (Boolean) 16 | self.phaseProductFlag = None # (Boolean) 17 | self.unitOfMeasure = None # (UnitOfMeasureReference) 18 | self.minStockLevel = None # (Integer) 19 | self.price = None # (Number) 20 | self.cost = None # (Number) 21 | self.priceAttribute = None # (Enum) 22 | self.taxableFlag = None # (Boolean) 23 | self.customerDescription = None # *(String(6000)) 24 | self.manufacturer = None # (ManufacturerReference) 25 | self.manufacturerPartNumber = None # (String(50)) 26 | self.vendor = None # (CompanyReference) 27 | self.vendorSku = None # (String(50)) 28 | self.notes = None # (String) 29 | self.integrationXRef = None # (String(50)) 30 | self.dateEntered = None # (String) 31 | self.category = None # (ProductCategoryReference) 32 | self._info = None # (Metadata) 33 | 34 | # initialize object with json dict 35 | super().__init__(json_dict) 36 | -------------------------------------------------------------------------------- /finance/agreement_addition.py: -------------------------------------------------------------------------------- 1 | from ..cw_model import CWModel 2 | 3 | 4 | class AgreementAddition(CWModel): 5 | 6 | def __init__(self, json_dict=None): 7 | self.id = None # (Integer) 8 | self.product = None # *(IvItemReference) 9 | self.quantity = None # (Number) 10 | self.lessIncluded = None # (Number) 11 | self.unitPrice = None # (Number) 12 | self.unitCost = None # (Number) 13 | self.billCustomer = None # *(Enum) 14 | self.effectiveDate = None # (String) 15 | self.cancelledDate = None # (String) 16 | self.taxableFlag = None # (Boolean) 17 | self.serialNumber = None # (String(50)) 18 | self.invoiceDescription = None # (String(6000)) 19 | self.purchaseItemFlag = None # (Boolean) 20 | self.specialOrderFlag = None # (Boolean) 21 | self.agreementId = None # (Integer) 22 | self.description = None # (String) 23 | self.billedQuantity = None # (Number) 24 | self.uom = None # (String) 25 | self.extPrice = None # (Number) 26 | self.extCost = None # (Number) 27 | self.sequenceNumber = None # (Number) 28 | self.margin = None # (Number) 29 | self.prorateCost = None # (Number) 30 | self.proratePrice = None # (Number) 31 | self.extendedProrateCost = None # (Number) 32 | self.extendedProratePrice = None # (Number) 33 | self.prorateCurrentPeriodFlag = None # (Boolean) 34 | self._info = None # (Metadata) 35 | 36 | # initialize object with json dict 37 | super().__init__(json_dict) 38 | -------------------------------------------------------------------------------- /service/ticket_notes_api.py: -------------------------------------------------------------------------------- 1 | # Class for /service/tickets/{id}/notes 2 | from .service import ticket_note 3 | 4 | 5 | class TicketNotesAPI(CWController): 6 | def __init__(self, ticket_id): 7 | self.module_url = 'service' 8 | self.module = 'tickets/{}/notes'.format(ticket_id) 9 | self._class = ticket_note.TicketNote 10 | super().__init__() # instance gets passed to parent object 11 | 12 | def get_ticket_notes(self): 13 | return super()._get() 14 | 15 | def create_ticket_note(self, a_ticket_note): 16 | return super()._create(a_ticket_note) 17 | 18 | def get_ticket_notes_count(self): 19 | return super()._get_count() 20 | 21 | def get_ticket_note_by_id(self, ticket_note_id): 22 | return super()._get_by_id(ticket_note_id) 23 | 24 | def delete_ticket_note_by_id(self, ticket_note_id): 25 | super()._delete_by_id(ticket_note_id) 26 | 27 | def replace_ticket_note(self, ticket_note_id): 28 | pass 29 | 30 | def update_ticket_note(self, ticket_id, key, value): 31 | return super()._update(ticket_id, key, value) 32 | 33 | def merge_ticket_note(self, a_ticket_note, target_ticket_note_id): 34 | # return super()._merge(a_ticket_note, target_ticket_note_id) 35 | pass 36 | 37 | # get 38 | # create 39 | # count 40 | # search 41 | # getbyid 42 | # delete 43 | # replace 44 | # update 45 | # activities 46 | # count 47 | # timeentries 48 | # count 49 | # scheduleentries 50 | # count 51 | # documents 52 | # count 53 | # products 54 | # count 55 | # configurations 56 | # createconfigurations 57 | # count 58 | # betbyid 59 | # delete 60 | -------------------------------------------------------------------------------- /company/contacts_api.py: -------------------------------------------------------------------------------- 1 | from ..cw_controller import CWController 2 | # Class for /company/contacts 3 | from . import contact 4 | 5 | 6 | class ContactsAPI(CWController): 7 | def __init__(self): 8 | self.module_url = 'company' 9 | self.module = 'contacts' 10 | self._class = contact.Contact 11 | super().__init__() # instance gets passed to parent object 12 | 13 | def get_contacts(self): 14 | return super()._get() 15 | 16 | def create_contact(self, a_contact): 17 | return super()._create(a_contact) 18 | 19 | def get_contacts_count(self): 20 | return super()._get_count() 21 | 22 | def get_contact_by_id(self, contact_id): 23 | return super()._get_by_id(contact_id) 24 | 25 | def delete_contact_by_id(self, contact_id): 26 | super()._delete_by_id(contact_id) 27 | 28 | def replace_contact(self, contact_id): 29 | pass 30 | 31 | def update_contact(self, contact_id, key, value): 32 | return super()._update(contact_id, key, value) 33 | 34 | def merge_contact(self, a_contact, target_contact_id): 35 | # return super()._merge(a_contact, target_contact_id) 36 | pass 37 | 38 | def validate_portal_credentials(self, a_contact): 39 | for comm_items in a_contact.communicationItems: 40 | if comm_items['defaultFlag'] and comm_items['communicationType'] == 'Email': 41 | email = comm_items['value'] 42 | break 43 | dict_post = {'email': email, 'password': a_contact.portalPassword} 44 | json_results = self.contacts.post(user_data=dict_post, user_headers=connectpyse.basic_auth) 45 | status_code = json_results.status_code 46 | return status_code 47 | 48 | -------------------------------------------------------------------------------- /time/time_entry.py: -------------------------------------------------------------------------------- 1 | from ..cw_model import CWModel 2 | 3 | 4 | class TimeEntry(CWModel): 5 | 6 | def __init__(self, json_dict=None): 7 | self.id = None # (Integer) 8 | self.company = None # *(CompanyReference) 9 | self.chargeToId = None # *(Integer) 10 | self.chargeToType = None # *(Enum) 11 | self.member = None # (MemberReference) 12 | self.locationId = None # (Integer) 13 | self.businessUnitId = None # (Integer) 14 | self.workType = None # (WorkTypeReference) 15 | self.workRole = None # (WorkRoleReference) 16 | self.agreement = None # (AgreementReference) 17 | self.timeStart = None # *(String) 18 | self.timeEnd = None # (String) 19 | self.hoursDeduct = None # (Number) 20 | self.actualHours = None # (Number) 21 | self.billableOption = None # (Enum) 22 | self.notes = None # (String) 23 | self.internalNotes = None # (String) 24 | self.addToDetailDescriptionFlag = None # (Boolean) 25 | self.addToInternalAnalysisFlag = None # (Boolean) 26 | self.addToResolutionFlag = None # (Boolean) 27 | self.emailResourceFlag = None # (Boolean) 28 | self.emailContactFlag = None # (Boolean) 29 | self.emailCcFlag = None # (Boolean) 30 | self.emailCc = None # (String) 31 | self.hoursBilled = None # (Number) 32 | self.enteredBy = None # (String) 33 | self.dateEntered = None # (String) 34 | self.invoice = None # (InvoiceReference) 35 | self.hourlyRate = None # (Number) 36 | self._info = None # (Metadata) 37 | self.customFields = None # (CustomFieldValue[]) 38 | 39 | # initialize object with json dict 40 | super().__init__(json_dict) 41 | -------------------------------------------------------------------------------- /service/tickets_api.py: -------------------------------------------------------------------------------- 1 | from ..cw_controller import CWController 2 | # Class for /ticket/tickets 3 | from . import ticket 4 | 5 | 6 | class TicketsAPI(CWController): 7 | def __init__(self): 8 | self.module_url = 'service' 9 | self.module = 'tickets' 10 | self._class = ticket.Ticket 11 | super().__init__() # instance gets passed to parent object 12 | 13 | def get_tickets(self): 14 | return super()._get() 15 | 16 | def create_ticket(self, a_ticket): 17 | return super()._create(a_ticket) 18 | 19 | def get_tickets_count(self): 20 | return super()._get_count() 21 | 22 | def get_ticket_by_id(self, ticket_id): 23 | return super()._get_by_id(ticket_id) 24 | 25 | def delete_ticket_by_id(self, ticket_id): 26 | super()._delete_by_id(ticket_id) 27 | 28 | def replace_ticket(self, ticket_id): 29 | pass 30 | 31 | def update_ticket(self, ticket_id, key, value): 32 | return super()._update(ticket_id, key, value) 33 | 34 | def merge_ticket(self, a_ticket, target_ticket_id): 35 | # return super()._merge(a_ticket, target_ticket_id) 36 | pass 37 | 38 | # get 39 | # create 40 | # count 41 | # search 42 | # getbyid 43 | # delete 44 | # replace 45 | # update 46 | # activities 47 | # count 48 | # timeentries 49 | # count 50 | # scheduleentries 51 | # count 52 | # documents 53 | # count 54 | # products 55 | # count 56 | # configurations 57 | def create_configurations(self, ticket_id, config_dict): 58 | # Create Configuration Association 59 | # /service/tickets/{id}/configurations 60 | # { id(Integer), deviceIdentifier(String) } 61 | the_id = '{}/configurations'.format(ticket_id) 62 | return super()._post_dict(the_id, config_dict)# count 63 | # betbyid 64 | # delete 65 | -------------------------------------------------------------------------------- /procurement/purchase_order_line_item.py: -------------------------------------------------------------------------------- 1 | from ..cw_model import CWModel 2 | 3 | 4 | class PurchaseOrderLineItem(CWModel): 5 | 6 | def __init__(self, json_dict=None): 7 | # With: id(Integer) 8 | # Search: ^(\s*)(\*?)([_a-z0-9]*)\s?(\(.*$) 9 | # Replace: $1self.$3 = None # $2$4 10 | # To get: self.id = None # (Integer) 11 | self.id = None # (Integer) 12 | self.backorderedFlag = None # (Boolean) 13 | self.canceledBy = None # (String) 14 | self.canceledFlag = None # (Boolean) 15 | self.canceledReason = None # (String(100)) 16 | self.closedFlag = None # (Boolean) 17 | self.dateCanceled = None # (String) 18 | self.dateCanceledUtc = None # (String) 19 | self.description = None # *(String(6000)) 20 | self.displayInternalNotesFlag = None # (Boolean) 21 | self.expectedShipDate = None # (String) 22 | self.internalNotes = None # (String(1000)) 23 | self.lineNumber = None # *(Integer) 24 | self.packingSlip = None # (String(30)) 25 | self.product = None # *(IvItemReference) 26 | self.purchaseOrderId = None # (Integer) 27 | self.quantity = None # *(Number) 28 | self.receivedQuantity = None # (Integer) 29 | self.serialNumbers = None # (String(100)) 30 | self.shipDate = None # (String) 31 | self.shipmentMethod = None # (ShipmentMethodReference) 32 | self.tax = None # (Number) 33 | self.trackingNumber = None # (String(50)) 34 | self.unitCost = None # (Number) 35 | self.unitOfMeasure = None # *(UnitOfMeasureReference) 36 | self.vendorOrderNumber = None # (String(50)) 37 | self.warehouse = None # (WarehouseReference) 38 | self.warehouseBin = None # (WarehouseBinReference) 39 | self._info = None # (Metadata) 40 | 41 | # initialize object with json dict 42 | super().__init__(json_dict) 43 | -------------------------------------------------------------------------------- /finance/agreements_api.py: -------------------------------------------------------------------------------- 1 | import restapi 2 | # Class for /company/agreements 3 | from connectpyse.finance import agreement 4 | 5 | 6 | class AgreementsAPI(restapi.Client): 7 | 8 | module_url = 'finance' 9 | 10 | def __init__(self, base_url): 11 | super(AgreementsAPI, self).__init__('{}/{}'.format(base_url, AgreementsAPI.module_url)) 12 | 13 | def get_agreements(self, user_headers, user_params=None): 14 | json_results = self.agreements.get(user_headers=user_headers, user_params=user_params) 15 | for json in json_results: 16 | yield agreement.Agreement(json) 17 | 18 | def create_agreement(self, a_agreement): 19 | pass 20 | 21 | def get_agreements_count(self, user_headers): 22 | json_results = self.agreements.get(the_id='count', user_headers=user_headers) 23 | count = json_results['count'] 24 | return count 25 | 26 | def get_agreement_by_id(self, user_headers, agreement_id): 27 | a_agreement = agreement.Agreement(self.agreements.get(the_id=agreement_id, user_headers=user_headers)) 28 | return a_agreement 29 | 30 | def delete_agreement_by_id(self, agreement_id ): 31 | pass 32 | 33 | def replace_agreement(self, agreement_id): 34 | pass 35 | 36 | def update_agreement(self, agreement_id): 37 | pass 38 | 39 | def merge_agreement(self, agreement_id): 40 | pass 41 | 42 | def create_configuration_association(self, user_headers, agreement_id, config_id): 43 | # /agreements/{id}/configurations 44 | self.root_path = self.root_path + '/agreements/{}'.format(agreement_id) 45 | 46 | dict_post = {'id': config_id} 47 | json_results = self.configurations.post(user_data=dict_post, user_headers=user_headers) 48 | # status_code = json_results.status_code 49 | return json_results 50 | 51 | def get_agreement_configurations(self): 52 | pass 53 | -------------------------------------------------------------------------------- /sales/order.py: -------------------------------------------------------------------------------- 1 | from ..cw_model import CWModel 2 | 3 | 4 | class Order(CWModel): 5 | 6 | def __init__(self, json_dict=None): 7 | self.id = None # (Integer) 8 | self.company = None # *(CompanyReference) 9 | self.contact = None # (ContactReference) 10 | self.phone = None # (String) 11 | self.phoneExt = None # (String) 12 | self.email = None # (String) 13 | self.site = None # (SiteReference) 14 | self.status = None # *(OrderStatusReference) 15 | self.opportunity = None # (OpportunityReference) 16 | self.orderDate = None # (String) 17 | self.dueDate = None # (String) 18 | self.billingTerms = None # (BillingTermsReference) 19 | self.taxCode = None # (TaxCodeReference) 20 | self.poNumber = None # (String(50)) 21 | self.locationId = None # (Integer) 22 | self.businessUnitId = None # (Integer) 23 | self.salesRep = None # *(MemberReference) 24 | self.notes = None # (String) 25 | self.billClosedFlag = None # (Boolean) 26 | self.billShippedFlag = None # (Boolean) 27 | self.restrictDownpaymentFlag = None # (Boolean) 28 | self.description = None # (String) 29 | self.topCommentFlag = None # (Boolean) 30 | self.bottomCommentFlag = None # (Boolean) 31 | self.shipToCompany = None # (CompanyReference) 32 | self.shipToContact = None # (ContactReference) 33 | self.shipToSite = None # (SiteReference) 34 | self.billToCompany = None # (CompanyReference) 35 | self.billToContact = None # (ContactReference) 36 | self.billToSite = None # (SiteReference) 37 | self.productIds = None # (Integer[]) 38 | self.documentIds = None # (Integer[]) 39 | self.invoiceIds = None # (Integer[]) 40 | self.configIds = None # (Integer[]) 41 | self.total = None # (Number) 42 | self.taxTotal = None # (Number) 43 | self._info = None # (Metadata) 44 | 45 | # initialize object with json dict 46 | super().__init__(json_dict) 47 | -------------------------------------------------------------------------------- /sales/opportunity.py: -------------------------------------------------------------------------------- 1 | from ..cw_model import CWModel 2 | 3 | 4 | class Opportunity(CWModel): 5 | 6 | def __init__(self, json_dict=None): 7 | self.id = None # (Integer) 8 | self.name = None # *(String(100)) 9 | self.expectedCloseDate = None # (String) 10 | self.type = None # (OpportunityTypeReference) 11 | self.stage = None # (OpportunityStageReference) 12 | self.status = None # (OpportunityStatusReference) 13 | self.priority = None # (OpportunityPriorityReference) 14 | self.notes = None # (String) 15 | self.probability = None # (OpportunityProbabilityReference) 16 | self.source = None # (String(50)) 17 | self.rating = None # (OpportunityRatingReference) 18 | self.campaign = None # (CampaignReference) 19 | self.primarySalesRep = None # *(MemberReference) 20 | self.secondarySalesRep = None # (MemberReference) 21 | self.locationId = None # (Integer) 22 | self.businessUnitId = None # (Integer) 23 | self.company = None # *(CompanyReference) 24 | self.contact = None # *(ContactReference) 25 | self.site = None # *(SiteReference) 26 | self.customerPO = None # (String(25)) 27 | self.pipelineChangeDate = None # (String) 28 | self.dateBecameLead = None # (String) 29 | self.closedDate = None # (String) 30 | self.closedBy = None # (MemberReference) 31 | self.totalSalesTax = None # (Number) 32 | self.shipToCompany = None # (CompanyReference) 33 | self.shipToContact = None # (ContactReference) 34 | self.shipToSite = None # (SiteReference) 35 | self.billToCompany = None # (CompanyReference) 36 | self.billToContact = None # (ContactReference) 37 | self.billToSite = None # (SiteReference) 38 | self.billingTerms = None # (BillingTermsReference) 39 | self.taxCode = None # (TaxCodeReference) 40 | self._info = None # (Metadata) 41 | self.customFields = None # (CustomFieldValue[]) 42 | 43 | # initialize object with json dict 44 | super().__init__(json_dict) 45 | -------------------------------------------------------------------------------- /company/company_management_summary_report.py: -------------------------------------------------------------------------------- 1 | from ..cw_model import CWModel 2 | 3 | 4 | class CompanyManagementSummaryReport(CWModel): 5 | 6 | def __init__(self, json_dict=None): 7 | self.id = None # (Integer) 8 | self.managementSolution = None # (ManagementSolutionReference) 9 | self.groupIdentifier = None # *(String(100)) 10 | self.deviceType = None # (Enum) 11 | self.agreement = None # (AgreementReference) 12 | self.snmpMachines = None # (Integer) 13 | self.totalWorkstations = None # (Integer) 14 | self.totalServers = None # (Integer) 15 | self.totalWindowsServers = None # (Integer) 16 | self.totalWindowsWorkstations = None # (Integer) 17 | self.totalManagedMachines = None # (Integer) 18 | self.serversOffline = None # (Integer) 19 | self.serversDiskSpaceLow = None # (Integer) 20 | self.failedBackupJobs = None # (Integer) 21 | self.totalNotifications = None # (Integer) 22 | self.successfulBackupJobs = None # (Integer) 23 | self.serverAvailability = None # (Integer) 24 | self.virusesRemoved = None # (Integer) 25 | self.spywareItemsRemoved = None # (Integer) 26 | self.windowsPatchesInstalled = None # (Integer) 27 | self.diskCleanups = None # (Integer) 28 | self.diskDefragmentations = None # (Integer) 29 | self.fullyPatchedMachines = None # (Integer) 30 | self.missingOneTwoPatchesMachines = None # (Integer) 31 | self.missingThreeFivePatchesMachines = None # (Integer) 32 | self.missingMoreFivePatchesMachines = None # (Integer) 33 | self.missingUnscannedPatchesMachines = None # (Integer) 34 | self.alertsGenerated = None # (String) 35 | self.internetConnectivity = None # (Number) 36 | self.diskSpaceCleanedMb = None # (Integer) 37 | self.missingSecurityPatches = None # (String) 38 | self.cpuUtilization = None # (Number) 39 | self.memoryUtilization = None # (Number) 40 | self.company = None # (CompanyReference) 41 | self._info = None # (Metadata) 42 | 43 | # initialize object with json dict 44 | super().__init__(json_dict) 45 | -------------------------------------------------------------------------------- /project/project_phase.py: -------------------------------------------------------------------------------- 1 | from ..cw_model import CWModel 2 | 3 | 4 | class ProjectPhase(CWModel): 5 | 6 | def __init__(self, json_dict=None): 7 | self.id = None # (Integer) 8 | self.projectId = None # (Integer) 9 | self.description = None # *(String(100)) 10 | self.board = None # (ProjectBoardReference) 11 | self.status = None # (PhaseStatusReference) 12 | self.agreement = None # (AgreementReference) 13 | self.opportunity = None # (OpportunityReference) 14 | self.parentPhase = None # (ProjectPhaseReference) 15 | self.wbsCode = None # (String(50)) 16 | self.billTime = None # (Enum) 17 | self.billExpenses = None # (Enum) 18 | self.billProducts = None # (Enum) 19 | self.markAsMilestoneFlag = None # (Boolean) 20 | self.notes = None # (String) 21 | self.deadlineDate = None # (String) 22 | self.billSeparatelyFlag = None # (Boolean) 23 | self.billingMethod = None # *(Enum) 24 | self.scheduledHours = None # (Number) 25 | self.scheduledStart = None # (String) 26 | self.scheduledEnd = None # (String) 27 | self.actualHours = None # (Number) 28 | self.actualStart = None # (String) 29 | self.actualEnd = None # (String) 30 | self.budgetHours = None # (Number) 31 | self.locationId = None # (Integer) 32 | self.businessUnitId = None # (Integer) 33 | self.hourlyRate = None # (Number) 34 | self.billingStartDate = None # (String) 35 | self.billPhaseClosedFlag = None # (Boolean) 36 | self.billProjectClosedFlag = None # (Boolean) 37 | self.downpayment = None # (Number) 38 | self.poNumber = None # (String(25)) 39 | self.poAmount = None # (Number) 40 | self.estimatedTimeCost = None # (Number) 41 | self.estimatedExpenseCost = None # (Number) 42 | self.estimatedProductCost = None # (Number) 43 | self.estimatedTimeRevenue = None # (Number) 44 | self.estimatedExpenseRevenue = None # (Number) 45 | self.estimatedProductRevenue = None # (Number) 46 | self._info = None # (Metadata) 47 | 48 | # initialize object with json dict 49 | super().__init__(json_dict) 50 | -------------------------------------------------------------------------------- /company/contact.py: -------------------------------------------------------------------------------- 1 | from ..cw_model import CWModel 2 | 3 | 4 | class Contact(CWModel): 5 | def __init__(self, json_dict=None): 6 | self.id = None # (Integer) 7 | self.firstName = None # *(String(30)) 8 | self.lastName = None # (String(30)) 9 | self.type = None # (ContactTypeReference) 10 | self.company = None # (CompanyReference) 11 | self.site = None # (SiteReference) 12 | self.addressLine1 = None # (String(50)) 13 | self.addressLine2 = None # (String(50)) 14 | self.city = None # (String(50)) 15 | self.state = None # (String(50)) 16 | self.zip = None # (String(12)) 17 | self.country = None # (String(50)) 18 | self.relationship = None # (RelationshipReference) 19 | self.department = None # (ContactDepartmentReference) 20 | self.inactiveFlag = None # (Boolean) 21 | self.defaultMergeContactId = None # (Integer) 22 | self.securityIdentifier = None # (String(184)) 23 | self.managerContactId = None # (Integer) 24 | self.assistantContactId = None # (Integer) 25 | self.title = None # (String(100)) 26 | self.school = None # (String(50)) 27 | self.nickName = None # (String(30)) 28 | self.marriedFlag = None # (Boolean) 29 | self.childrenFlag = None # (Boolean) 30 | self.significantOther = None # (String(30)) 31 | self.portalPassword = None # (String(15)) 32 | self.portalSecurityLevel = None # (Integer) 33 | self.disablePortalLoginFlag = None # (Boolean) 34 | self.unsubscribeFlag = None # (Boolean) 35 | self.gender = None # (Enum) 36 | self.birthDay = None # (String) 37 | self.anniversary = None # (String) 38 | self.presence = None # (Enum) 39 | self.mobileGuid = None # (Guid) 40 | self.facebookUrl = None # (String) 41 | self.twitterUrl = None # (String) 42 | self.linkedInUrl = None # (String) 43 | self.defaultBillingFlag = None # (Boolean) 44 | self.communicationItems = None # (Array) 45 | self._info = None # (Metadata) 46 | self.customFields = None # (Array) 47 | 48 | # initialize object with json dict 49 | super().__init__(json_dict) 50 | -------------------------------------------------------------------------------- /finance/accounting_unposted_procurement.py: -------------------------------------------------------------------------------- 1 | from ..cw_model import CWModel 2 | 3 | 4 | class AccountingUnpostedProcurement(CWModel): 5 | 6 | def __init__(self, json_dict=None): 7 | self.id = None # (Integer) 8 | self.description = None # (String) 9 | self.locationId = None # (Integer) 10 | self.departmentId = None # (Integer) 11 | self.procurementType = None # (Enum) 12 | self.purchaseOrder = None # (PurchaseOrderReference) 13 | self.purchaseDate = None # (String) 14 | self.trackingNumber = None # (String) 15 | self.billingTerms = None # (BillingTermsReference) 16 | self.currency = None # (CurrencyReference) 17 | self.total = None # (Number) 18 | self.taxCode = None # (TaxCodeReference) 19 | self.avalaraTaxFlag = None # (Boolean) 20 | self.itemTaxableFlag = None # (Boolean) 21 | self.purchaseOrderTaxableFlag = None # (Boolean) 22 | self.stateTaxFlag = None # (Boolean) 23 | self.stateTaxXref = None # (String) 24 | self.stateTaxAmount = None # (Number) 25 | self.countyTaxFlag = None # (Boolean) 26 | self.countyTaxXref = None # (String) 27 | self.countyTaxAmount = None # (Number) 28 | self.cityTaxFlag = None # (Boolean) 29 | self.cityTaxXref = None # (String) 30 | self.cityTaxAmount = None # (Number) 31 | self.countryTaxFlag = None # (Boolean) 32 | self.countryTaxXref = None # (String) 33 | self.countryTaxAmount = None # (Number) 34 | self.compositeTaxFlag = None # (Boolean) 35 | self.compositeTaxXref = None # (String) 36 | self.compositeTaxAmount = None # (Number) 37 | self.taxTotal = None # (Number) 38 | self.customer = None # (CompanyReference) 39 | self.vendor = None # (CompanyReference) 40 | self.vendorAccountNumber = None # (String) 41 | self.vendorInvoiceNumber = None # (String) 42 | self.vendorInvoiceDate = None # (String) 43 | self.taxFreightFlag = None # (Boolean) 44 | self.freightTaxTotal = None # (Number) 45 | self.freightCost = None # (Number) 46 | self.dateClosed = None # (String) 47 | self._info = None # (Metadata) 48 | 49 | # initialize object with json dict 50 | super().__init__(json_dict) 51 | -------------------------------------------------------------------------------- /finance/accounting_unposted_invoice.py: -------------------------------------------------------------------------------- 1 | from ..cw_model import CWModel 2 | 3 | 4 | class AccountingUnpostedInvoice(CWModel): 5 | 6 | def __init__(self, json_dict=None): 7 | self.id = None # (Integer) 8 | self.billingLogId = None # (Integer) 9 | self.locationId = None # (Integer) 10 | self.departmentId = None # (Integer) 11 | self.company = None # (CompanyReference) 12 | self.accountNumber = None # (String) 13 | self.billToCompany = None # (CompanyReference) 14 | self.billToSite = None # (SiteReference) 15 | self.shipToCompany = None # (CompanyReference) 16 | self.shipToSite = None # (SiteReference) 17 | self.invoiceNumber = None # (String) 18 | self.invoiceDate = None # (String) 19 | self.invoiceType = None # (Enum) 20 | self.description = None # (String) 21 | self.billingTerms = None # (BillingTermsReference) 22 | self.dueDays = None # (String) 23 | self.dueDate = None # (String) 24 | self.currency = None # (CurrencyReference) 25 | self.subTotal = None # (Number) 26 | self.total = None # (Number) 27 | self.invoiceTaxableFlag = None # (Boolean) 28 | self.taxCode = None # (TaxCodeReference) 29 | self.avalaraTaxFlag = None # (Boolean) 30 | self.itemTaxableFlag = None # (Boolean) 31 | self.salesTaxAmount = None # (Number) 32 | self.stateTaxFlag = None # (Boolean) 33 | self.stateTaxXref = None # (String) 34 | self.stateTaxAmount = None # (Number) 35 | self.countyTaxFlag = None # (Boolean) 36 | self.countyTaxXref = None # (String) 37 | self.countyTaxAmount = None # (Number) 38 | self.cityTaxFlag = None # (Boolean) 39 | self.cityTaxXref = None # (String) 40 | self.cityTaxAmount = None # (Number) 41 | self.countryTaxFlag = None # (Boolean) 42 | self.countryTaxXref = None # (String) 43 | self.countryTaxAmount = None # (Number) 44 | self.compositeTaxFlag = None # (Boolean) 45 | self.compositeTaxXref = None # (String) 46 | self.compositeTaxAmount = None # (Number) 47 | self.createdBy = None # (String) 48 | self.dateClosed = None # (String) 49 | self._info = None # (Metadata) 50 | 51 | # initialize object with json dict 52 | super().__init__(json_dict) 53 | -------------------------------------------------------------------------------- /finance/invoice.py: -------------------------------------------------------------------------------- 1 | from ..cw_model import CWModel 2 | 3 | 4 | class Invoice(CWModel): 5 | 6 | def __init__(self, json_dict=None): 7 | self.id = None # (Integer) 8 | self.invoiceNumber = None # (String(15)) 9 | self.type = None # *(Enum) 10 | self.status = None # (BillingStatusReference) 11 | self.company = None # *(CompanyReference) 12 | self.billToCompany = None # (CompanyReference) 13 | self.shipToCompany = None # (CompanyReference) 14 | self.applyToType = None # (Enum) 15 | self.applyToId = None # (Integer) 16 | self.attention = None # (String(60)) 17 | self.billingSite = None # (SiteReference) 18 | self.shippingSite = None # (SiteReference) 19 | self.billingTerms = None # (BillingTermsReference) 20 | self.reference = None # (String(50)) 21 | self.customerPO = None # (String(50)) 22 | self.templateSetupId = None # (Integer) 23 | self.emailTemplateId = None # (Integer) 24 | self.addToBatchEmailList = None # (Boolean) 25 | self.date = None # (String) 26 | self.restrictDownpaymentFlag = None # (Boolean) 27 | self.locationId = None # (Integer) 28 | self.departmentId = None # (Integer) 29 | self.territoryId = None # (Integer) 30 | self.topComment = None # (String) 31 | self.bottomComment = None # (String) 32 | self.taxableFlag = None # (Boolean) 33 | self.taxCode = None # (TaxCodeReference) 34 | self.internalNotes = None # (String) 35 | self.downpaymentPreviouslyTaxedFlag = None # (Boolean) 36 | self.serviceTotal = None # (Number) 37 | self.dueDate = None # (String) 38 | self.expenseTotal = None # (Number) 39 | self.productTotal = None # (Number) 40 | self.previousProgressApplied = None # (Number) 41 | self.serviceAdjustmentAmount = None # (Number) 42 | self.agreementAmount = None # (Number) 43 | self.downpaymentApplied = None # (Number) 44 | self.subtotal = None # (Number) 45 | self.total = None # (Number) 46 | self.remainingDownpayment = None # (Number) 47 | self.salesTax = None # (Number) 48 | self.adjustmentReason = None # (String) 49 | self.adjustedBy = None # (String) 50 | self.payments = None # (Number) 51 | self.credits = None # (Number) 52 | self.balance = None # (Number) 53 | self.specialInvoiceFlag = None # (Boolean) 54 | 55 | # initialize object with json dict 56 | super().__init__(json_dict) 57 | -------------------------------------------------------------------------------- /finance/accounting_unposted_expense.py: -------------------------------------------------------------------------------- 1 | from ..cw_model import CWModel 2 | 3 | 4 | class AccountingUnpostedExpense(CWModel): 5 | 6 | def __init__(self, json_dict=None): 7 | self.id = None # (Integer) 8 | self.locationId = None # (Integer) 9 | self.departmentId = None # (Integer) 10 | self.company = None # (CompanyReference) 11 | self.accountNumber = None # (String) 12 | self.creditAccount = None # (String) 13 | self.expenseDetailId = None # (Integer) 14 | self.expenseType = None # (ExpenseTypeReference) 15 | self.classification = None # (Enum) 16 | self.glType = None # (Enum) 17 | self.member = None # (MemberReference) 18 | self.dateExpense = None # (String) 19 | self.chargeCode = None # (ChargeCodeReference) 20 | self.chargeDescription = None # (String) 21 | self.inPolicy = None # (Boolean) 22 | self.paymentMethod = None # (PaymentMethodReference) 23 | self.currency = None # (CurrencyReference) 24 | self.total = None # (Number) 25 | self.billableAmount = None # (Number) 26 | self.nonBillableAmount = None # (Number) 27 | self.agreement = None # (AgreementReference) 28 | self.agreementAmountCovered = None # (Number) 29 | self.ticket = None # (TicketReference) 30 | self.project = None # (ProjectReference) 31 | self.projectPhase = None # (ProjectPhaseReference) 32 | self.taxCode = None # (TaxCodeReference) 33 | self.avalaraTaxFlag = None # (Boolean) 34 | self.itemTaxableFlag = None # (Boolean) 35 | self.salesTaxAmount = None # (Number) 36 | self.stateTaxFlag = None # (Boolean) 37 | self.stateTaxXref = None # (String) 38 | self.stateTaxAmount = None # (Number) 39 | self.countyTaxFlag = None # (Boolean) 40 | self.countyTaxXref = None # (String) 41 | self.countyTaxAmount = None # (Number) 42 | self.cityTaxFlag = None # (Boolean) 43 | self.cityTaxXref = None # (String) 44 | self.cityTaxAmount = None # (Number) 45 | self.countryTaxFlag = None # (Boolean) 46 | self.countryTaxXref = None # (String) 47 | self.countryTaxAmount = None # (Number) 48 | self.compositeTaxFlag = None # (Boolean) 49 | self.compositeTaxXref = None # (String) 50 | self.compositeTaxAmount = None # (Number) 51 | self.dateClosed = None # (String) 52 | self._info = None # (Metadata) 53 | 54 | # initialize object with json dict 55 | super().__init__(json_dict) 56 | -------------------------------------------------------------------------------- /procurement/product_item.py: -------------------------------------------------------------------------------- 1 | from ..cw_model import CWModel 2 | 3 | 4 | class ProductItem(CWModel): 5 | 6 | def __init__(self, json_dict=None): 7 | # With: id(Integer) 8 | # Search: ^(\s*)(\*?)([_a-z0-9]*)\s?(\(.*$) 9 | # Replace: $1self.$3 = None # $2$4 10 | # To get: self.id = None # (Integer) 11 | self.id = None # (Integer) 12 | self.catalogItem = None # *(CatalogItemReference) 13 | self.chargeToId = None # *(Integer) 14 | self.chargeToType = None # *(Enum) 15 | self.description = None # (String(2000)) 16 | self.sequenceNumber = None # (Number) 17 | self.quantity = None # (Number) 18 | self.price = None # (Number) 19 | self.cost = None # (Number) 20 | self.discount = None # (Number) 21 | self.priceMethod = None # (Enum) 22 | self.billableOption = None # *(Enum) 23 | self.agreement = None # (AgreementReference) 24 | self.locationId = None # (Integer) 25 | self.businessUnitId = None # (Integer) 26 | self.vendor = None # (CompanyReference) 27 | self.vendorSku = None # (String(50)) 28 | self.taxableFlag = None # (Boolean) 29 | self.dropshipFlag = None # (Boolean) 30 | self.specialOrderFlag = None # (Boolean) 31 | self.phaseProductFlag = None # (Boolean) 32 | self.cancelledFlag = None # (Boolean) 33 | self.quantityCancelled = None # (Number) 34 | self.cancelledReason = None # (String(100)) 35 | self.customerDescription = None # (String(6000)) 36 | self.internalNotes = None # (String(1000)) 37 | self.productSuppliedFlag = None # (Boolean) 38 | self.subContractorShipToId = None # (Integer) 39 | self.subContractorAmountLimit = None # (Number) 40 | self.recurring = None # (ProductRecurring) 41 | self.sla = None # (SLAReference) 42 | self.entityType = None # (EntityTypeReference) 43 | self.forecastDetailId = None # (Integer) 44 | self.cancelledBy = None # (Integer) 45 | self.cancelledDate = None # (String) 46 | self.warehouse = None # (String) 47 | self.warehouseBin = None # (String) 48 | self.purchaseDate = None # (String) 49 | self.integrationXRef = None # (String) 50 | self.listPrice = None # (Number) 51 | self.serialNumberIds = None # (Integer[]) 52 | self.company = None # (CompanyReference) 53 | self.forecastStatus = None # (OpportunityStatusReference) 54 | self._info = None # (Metadata) 55 | self.bypassForecastUpdate = None # (Boolean) 56 | self.customFields = None # (CustomFieldValue[]) 57 | 58 | # initialize object with json dict 59 | super().__init__(json_dict) 60 | -------------------------------------------------------------------------------- /company/configuration.py: -------------------------------------------------------------------------------- 1 | from ..cw_model import CWModel 2 | 3 | 4 | class Configuration(CWModel): 5 | 6 | def __init__(self, json_dict=None): 7 | self.id = None # (Integer) 8 | self.name = None # (String(100))* 9 | self.type = None # (ConfigurationTypeReference)* 10 | self.status = None # (ConfigurationStatusReference) 11 | self.company = None # (CompanyReference)* 12 | self.contact = None # (ContactReference) 13 | self.site = None # (SiteReference) 14 | self.locationId = None # (Integer) 15 | self.businessUnitId = None # (Integer) 16 | self.deviceIdentifier = None # (String(100)) 17 | self.serialNumber = None # (String(250)) 18 | self.modelNumber = None # (String(50)) 19 | self.tagNumber = None # (String(50)) 20 | self.purchaseDate = None # (String) 21 | self.installationDate = None # (String) 22 | self.installedBy = None # (MemberReference) 23 | self.warrantyExpirationDate = None # (String) 24 | self.vendorNotes = None # (String) 25 | self.notes = None # (String) 26 | self.macAddress = None # (String(25)) 27 | self.lastLoginName = None # (String(100)) 28 | self.billFlag = None # (Boolean) 29 | self.backupSuccesses = None # (Integer) 30 | self.backupIncomplete = None # (Integer) 31 | self.backupFailed = None # (Integer) 32 | self.backupRestores = None # (Integer) 33 | self.lastBackupDate = None # (String) 34 | self.backupServerName = None # (String(50)) 35 | self.backupBillableSpaceGb = None # (Number) 36 | self.backupProtectedDeviceList = None # (String) 37 | self.backupYear = None # (Integer) 38 | self.backupMonth = None # (Integer) 39 | self.ipAddress = None # (String(50)) 40 | self.defaultGateway = None # (String(50)) 41 | self.osType = None # (String(250)) 42 | self.osInfo = None # (String(250)) 43 | self.cpuSpeed = None # (String(100)) 44 | self.ram = None # (String(25)) 45 | self.localHardDrives = None # (String) 46 | self.parentConfigurationId = None # (Integer) 47 | self.vendor = None # (CompanyReference) 48 | self.manufacturer = None # (ManufacturerReference) 49 | self.questions = None # (Array) 50 | self.activeFlag = None # (Boolean) 51 | self.managementLink = None # (String(200)) 52 | self.remoteLink = None # (String(200)) 53 | self.sla = None # (SLAReference) 54 | self.mobileGuid = None # (Guid) 55 | self._info = None # (Metadata) 56 | self.customFields = None # (Array) 57 | 58 | # initialize object with json dict 59 | super().__init__(json_dict) 60 | -------------------------------------------------------------------------------- /procurement/purchase_order.py: -------------------------------------------------------------------------------- 1 | from ..cw_model import CWModel 2 | 3 | 4 | class PurchaseOrderLineItem(CWModel): 5 | 6 | def __init__(self, json_dict=None): 7 | # With: id(Integer) 8 | # Search: ^(\s*)(\*?)([_a-z0-9]*)\s?(\(.*$) 9 | # Replace: $1self.$3 = None # $2$4 10 | # To get: self.id = None # (Integer) 11 | self.id = None # (Integer) 12 | self._info = None # (Metadata) 13 | self.businessUnitId = None # (Integer) 14 | self.cancelReason = None # (String) 15 | self.closedFlag = None # (Boolean) 16 | self.customerCity = None # (String) 17 | self.customerCompany = None # (CompanyReference) 18 | self.customerContact = None # (ContactReference) 19 | self.customerCountry = None # (CountryReference) 20 | self.customerExtension = None # (String) 21 | self.customerName = None # (String) 22 | self.customerPhone = None # (String) 23 | self.customerSite = None # (SiteReference) 24 | self.customerSiteName = None # (String) 25 | self.customerState = None # (String) 26 | self.customerStreetLine1 = None # (String) 27 | self.customerStreetLine2 = None # (String) 28 | self.customerZip = None # (String) 29 | self.dateClosed = None # (String) 30 | self.dropShipCustomerFlag = None # (Boolean) 31 | self.enteredBy = None # (String) 32 | self.freightCost = None # (Number) 33 | self.freightPackingSlip = None # (String) 34 | self.freightTaxTotal = None # (Number) 35 | self.internalNotes = None # (String) 36 | self.locationId = None # *(Integer) 37 | self.poDate = None # (String) 38 | self.poNumber = None # (String(50)) 39 | self.salesTax = None # (Number) 40 | self.shipmentDate = None # (String) 41 | self.shipmentMethod = None # (ShipmentMethodReference) 42 | self.shippingInstructions = None # (String) 43 | self.status = None # *(PurchaseOrderStatusReference) 44 | self.subTotal = None # (Number) 45 | self.taxCode = None # (TaxCodeReference) 46 | self.taxFreightFlag = None # (Boolean) 47 | self.taxPoFlag = None # (Boolean) 48 | self.terms = None # *(BillingTermsReference) 49 | self.total = None # (Number) 50 | self.trackingNumber = None # (String(50)) 51 | self.updateShipmentInfo = None # (Boolean) 52 | self.updateVendorOrderNumber = None # (Boolean) 53 | self.vendorCompany = None # *(CompanyReference) 54 | self.vendorContact = None # (ContactReference) 55 | self.vendorInvoiceDate = None # (String) 56 | self.vendorInvoiceNumber = None # (String(50)) 57 | self.vendorOrderNumber = None # (String(50)) 58 | self.vendorSite = None # (SiteReference) 59 | self.warehouse = None # (WarehouseReference) 60 | self.currency = None # (CurrencyReference) 61 | 62 | # initialize object with json dict 63 | super().__init__(json_dict) 64 | -------------------------------------------------------------------------------- /finance/agreement_type.py: -------------------------------------------------------------------------------- 1 | from ..cw_model import CWModel 2 | 3 | 4 | class AgreementType(CWModel): 5 | 6 | def __init__(self, json_dict=None): 7 | self.id = None # (Integer) 8 | self.name = None # *(String(50)) 9 | self.prefixSuffixOption = None # *(Enum) 10 | self.defaultFlag = None # (Boolean) 11 | self.inactiveFlag = None # (Boolean) 12 | self.prePaymentFlag = None # (Boolean) 13 | self.invoicePreSuffix = None # (String(5)) 14 | self.locationId = None # (Integer) 15 | self.businessUnitId = None # (Integer) 16 | self.restrictLocationFlag = None # (Boolean) 17 | self.restrictDepartmentFlag = None # (Boolean) 18 | self.slaId = None # (Integer) 19 | self.applicationUnits = None # (Enum) 20 | self.applicationLimit = None # (Number) 21 | self.applicationCycle = None # (Enum) 22 | self.applicationUnlimitedFlag = None # (Boolean) 23 | self.oneTimeFlag = None # (Boolean) 24 | self.coverAgreementTimeFlag = None # (Boolean) 25 | self.coverAgreementProductFlag = None # (Boolean) 26 | self.coverAgreementExpenseFlag = None # (Boolean) 27 | self.coverSalesTaxFlag = None # (Boolean) 28 | self.carryOverUnusedFlag = None # (Boolean) 29 | self.allowOverrunsFlag = None # (Boolean) 30 | self.expiredDays = None # (Integer) 31 | self.limit = None # (Integer) 32 | self.expireWhenZero = None # (Boolean) 33 | self.chargeToFirmFlag = None # (Boolean) 34 | self.employeeCompRate = None # *(Enum) 35 | self.employeeCompNotExceed = None # *(Enum) 36 | self.compHourlyRate = None # (Number) 37 | self.compLimitAmount = None # (Number) 38 | self.billCycleId = None # (Integer) 39 | self.billOneTimeFlag = None # (Boolean) 40 | self.billTermsId = None # (Integer) 41 | self.invoicingCycle = None # *(Enum) 42 | self.billAmount = None # (Number) 43 | self.taxableFlag = None # (Boolean) 44 | self.restrictDownPaymentFlag = None # (Boolean) 45 | self.invoiceDescription = None # (String(4000)) 46 | self.topCommentFlag = None # (Boolean) 47 | self.bottomCommentFlag = None # (Boolean) 48 | self.workRole = None # (WorkRoleReference) 49 | self.workType = None # (WorkTypeReference) 50 | self.projectTypeId = None # (Integer) 51 | self.invoiceTemplateSetupId = None # (Integer) 52 | self.billTime = None # *(Enum) 53 | self.billExpenses = None # *(Enum) 54 | self.billProducts = None # *(Enum) 55 | self.billableTimeInvoiceFlag = None # (Boolean) 56 | self.billableExpenseInvoiceFlag = None # (Boolean) 57 | self.billableProductInvoiceFlag = None # (Boolean) 58 | self.copyWorkRolesFlag = None # (Boolean) 59 | self.copyWorkTypesFlag = None # (Boolean) 60 | self._info = None # (Metadata) 61 | 62 | # initialize object with json dict 63 | super().__init__(json_dict) 64 | -------------------------------------------------------------------------------- /project/project.py: -------------------------------------------------------------------------------- 1 | from ..cw_model import CWModel 2 | 3 | 4 | class Project(CWModel): 5 | 6 | def __init__(self, json_dict=None): 7 | self.id = None # (Integer) 8 | self._info = None # (Metadata) 9 | self.actualEnd = None # (String) 10 | self.actualHours = None # (Number) 11 | self.actualStart = None # (String) 12 | self.agreement = None # (AgreementReference) 13 | self.billExpenses = None # (Enum) 14 | self.billingAmount = None # (Number) 15 | self.billingAttention = None # (String(50)) 16 | self.billingMethod = None # *(Enum) 17 | self.billingRateType = None # (Enum) 18 | self.billingTerms = None # (BillingTermsReference) 19 | self.billProducts = None # (Enum) 20 | self.billProjectAfterClosedFlag = None # (Boolean) 21 | self.billTime = None # (Enum) 22 | self.billToCompany = None # (CompanyReference) 23 | self.billToContact = None # (ContactReference) 24 | self.billToSite = None # (SiteReference) 25 | self.billUnapprovedTimeAndExpense = None # (Boolean) 26 | self.board = None # *(ProjectBoardReference) 27 | self.budgetAnalysis = None # (Enum) 28 | self.budgetFlag = None # (Boolean) 29 | self.budgetHours = None # (Number) 30 | self.businessUnitId = None # (Integer) 31 | self.company = None # *(CompanyReference) 32 | self.contact = None # (ContactReference) 33 | self.customerPO = None # (String(50)) 34 | self.description = None # (String) 35 | self.downpayment = None # (Number) 36 | self.estimatedEnd = None # *(String) 37 | self.estimatedExpenseRevenue = None # (Number) 38 | self.estimatedHours = None # (Number) 39 | self.estimatedProductRevenue = None # (Number) 40 | self.estimatedStart = None # *(String) 41 | self.estimatedTimeRevenue = None # (Number) 42 | self.expenseApprover = None # (MemberReference) 43 | self.includeDependenciesFlag = None # (Boolean) 44 | self.includeEstimatesFlag = None # (Boolean) 45 | self.locationId = None # (Integer) 46 | self.manager = None # (MemberReference) 47 | self.name = None # *(String(100)) 48 | self.opportunity = None # (OpportunityReference) 49 | self.projectTemplateId = None # (Integer) 50 | self.restrictDownPaymentFlag = None # (Boolean) 51 | self.scheduledEnd = None # (String) 52 | self.scheduledHours = None # (Number) 53 | self.scheduledStart = None # (String) 54 | self.shipToCompany = None # (CompanyReference) 55 | self.shipToContact = None # (ContactReference) 56 | self.shipToSite = None # (SiteReference) 57 | self.site = None # (SiteReference) 58 | self.status = None # (ProjectStatusReference) 59 | self.timeApprover = None # (MemberReference) 60 | self.type = None # (ProjectTypeReference) 61 | 62 | # initialize object with json dict 63 | super().__init__(json_dict) 64 | -------------------------------------------------------------------------------- /finance/accounting_batch_transaction.py: -------------------------------------------------------------------------------- 1 | from ..cw_model import CWModel 2 | 3 | 4 | class AccountingBatchTransaction(CWModel): 5 | 6 | def __init__(self, json_dict=None): 7 | self.id = None # (Integer) 8 | self.batch = None # (BatchReference) 9 | self.billingLogId = None # (Integer) 10 | self.invoiceNumber = None # (String) 11 | self.type = None # (Enum) 12 | self.description = None # (String) 13 | self.cost = None # (Number) 14 | self.item = None # (String) 15 | self.inventory = None # (String) 16 | self.salesCode = None # (String) 17 | self.cogs = None # (String) 18 | self.glAccount = None # (String) 19 | self.currency = None # (CurrencyReference) 20 | self.debitAmount = None # (Number) 21 | self.creditAmount = None # (Number) 22 | self.balance = None # (String) 23 | self.product = None # (ProductReference) 24 | self.quantity = None # (Number) 25 | self.unitOfMeasure = None # (UnitOfMeasureReference) 26 | self.serializedFlag = None # (Boolean) 27 | self.serialNumber = None # (String) 28 | self.shipmentMethod = None # (ShipmentMethodReference) 29 | self.packingSlip = None # (String) 30 | self.ticket = None # (TicketReference) 31 | self.project = None # (ProjectReference) 32 | self.phase = None # (ProjectPhaseReference) 33 | self.expenseClass = None # (Enum) 34 | self.expenseType = None # (ExpenseTypeReference) 35 | self.timeEntry = None # (TimeEntryReference) 36 | self.activity = None # (ActivityReference) 37 | self.segment1 = None # (String) 38 | self.segment2 = None # (String) 39 | self.segment3 = None # (String) 40 | self.segment4 = None # (String) 41 | self.segment5 = None # (String) 42 | self.segment6 = None # (String) 43 | self.segment7 = None # (String) 44 | self.segment8 = None # (String) 45 | self.segment9 = None # (String) 46 | self.segment10 = None # (String) 47 | self.avalaraTaxFlag = None # (Boolean) 48 | self.itemTaxableFlag = None # (Boolean) 49 | self.taxCode = None # (TaxCodeReference) 50 | self.stateTaxFlag = None # (Boolean) 51 | self.stateTaxXref = None # (String) 52 | self.stateTaxAmount = None # (Number) 53 | self.countyTaxFlag = None # (Boolean) 54 | self.countyTaxXref = None # (String) 55 | self.countyTaxAmount = None # (Number) 56 | self.cityTaxFlag = None # (Boolean) 57 | self.cityTaxXref = None # (String) 58 | self.cityTaxAmount = None # (Number) 59 | self.countryTaxFlag = None # (Boolean) 60 | self.countryTaxXref = None # (String) 61 | self.countryTaxAmount = None # (Number) 62 | self.compositeTaxFlag = None # (Boolean) 63 | self.compositeTaxXref = None # (String) 64 | self.compositeTaxAmount = None # (Number) 65 | self.taxTotal = None # (Number) 66 | self._info = None # (Metadata) 67 | 68 | # initialize object with json dict 69 | super().__init__(json_dict) 70 | -------------------------------------------------------------------------------- /company/company.py: -------------------------------------------------------------------------------- 1 | from ..cw_model import CWModel 2 | 3 | 4 | class Company(CWModel): 5 | 6 | def __init__(self, json_dict=None): 7 | self.id = None # (Integer) 8 | self.identifier = None # *(String(25)) 9 | self.name = None # *(String(50)) 10 | self.status = None # *(CompanyStatusReference) 11 | self.type = None # *(CompanyTypeReference) 12 | self.addressLine1 = None # *(String(50)) 13 | self.addressLine2 = None # *(String(50)) 14 | self.city = None # *(String(50)) 15 | self.state = None # *(String(50)) 16 | self.zip = None # *(String(12)) 17 | self.country = None # (CountryReference) 18 | self.phoneNumber = None # (String(30)) 19 | self.faxNumber = None # (String(30)) 20 | self.website = None # (String(255)) 21 | self.territoryId = None # (Integer) 22 | self.marketId = None # (Integer) 23 | self.accountNumber = None # (String(100)) 24 | self.defaultContact = None # (ContactReference) 25 | self.dateAcquired = None # (String) 26 | self.sicCode = None # (SicCodeReference) 27 | self.parentCompany = None # (CompanyReference) 28 | self.annualRevenue = None # (Number) 29 | self.numberOfEmployees = None # (Integer) 30 | self.ownershipType = None # (OwnershipTypeReference) 31 | self.timeZone = None # (TimeZoneReference) 32 | self.leadSource = None # (String(50)) 33 | self.leadFlag = None # (Boolean) 34 | self.unsubscribeFlag = None # (Boolean) 35 | self.calendarId = None # (Integer) 36 | self.userDefinedField1 = None # (String(50)) 37 | self.userDefinedField2 = None # (String(50)) 38 | self.userDefinedField3 = None # (String(50)) 39 | self.userDefinedField4 = None # (String(50)) 40 | self.userDefinedField5 = None # (String(50)) 41 | self.userDefinedField6 = None # (String(50)) 42 | self.userDefinedField7 = None # (String(50)) 43 | self.userDefinedField8 = None # (String(50)) 44 | self.userDefinedField9 = None # (String(50)) 45 | self.userDefinedField10 = None # (String(50)) 46 | self.vendorIdentifier = None # (String(100)) 47 | self.taxIdentifier = None # (String) 48 | self.taxCode = None # (TaxCodeReference) 49 | self.billingTerms = None # (BillingTermsReference) 50 | self.invoiceTemplate = None # (InvoiceTemplateReference) 51 | self.pricingSchedule = None # (PricingScheduleReference) 52 | self.companyEntityType = None # (EntityTypeReference) 53 | self.billToCompany = None # (CompanyReference) 54 | self.billingSite = None # (SiteReference) 55 | self.billingContact = None # (ContactReference) 56 | self.invoiceDeliveryMethod = None # (BillingDeliveryReference) 57 | self.invoiceToEmailAddress = None # (String) 58 | self.invoiceCCEmailAddress = None # (String) 59 | self.deletedFlag = None # (Boolean) 60 | self.dateDeleted = None # (String) 61 | self.deletedBy = None # (String) 62 | self.mobileGuid = None # (Guid) 63 | self.currency = None # (CurrencyReference) 64 | self.territoryManager = None # (MemberReference) 65 | self._info = None # (Metadata) 66 | self.customFields = None # (Array) 67 | 68 | # initialize object with json dict 69 | super().__init__(json_dict) 70 | 71 | 72 | -------------------------------------------------------------------------------- /finance/agreement.py: -------------------------------------------------------------------------------- 1 | from ..cw_model import CWModel 2 | 3 | 4 | class Agreement(CWModel): 5 | 6 | def __init__(self, json_dict=None): 7 | self.id = None # (Integer) 8 | self.name = None # *(String(100)) 9 | self.type = None # *(AgreementTypeReference) 10 | self.company = None # *(CompanyReference) 11 | self.contact = None # *(ContactReference) 12 | self.subContractCompany = None # (CompanyReference) 13 | self.subContractContact = None # (ContactReference) 14 | self.parentAgreementId = None # (Integer) 15 | self.customerPO = None # (String(50)) 16 | self.locationId = None # (Integer) 17 | self.businessUnitId = None # (Integer) 18 | self.restrictLocationFlag = None # (Boolean) 19 | self.restrictDepartmentFlag = None # (Boolean) 20 | self.startDate = None # (String) 21 | self.endDate = None # (String) 22 | self.noEndingDateFlag = None # (Boolean) 23 | self.opportunity = None # (OpportunityReference) 24 | self.cancelledFlag = None # (Boolean) 25 | self.dateCancelled = None # (String) 26 | self.reasonCancelled = None # (String(50)) 27 | self.slaId = None # (Integer) 28 | self.workOrder = None # (String(20)) 29 | self.internalNotes = None # (String(5000)) 30 | self.applicationUnits = None # (Enum) 31 | self.applicationLimit = None # (Number) 32 | self.applicationCycle = None # (Enum) 33 | self.applicationUnlimitedFlag = None # (Boolean) 34 | self.oneTimeFlag = None # (Boolean) 35 | self.coverAgreementTime = None # (Boolean) 36 | self.coverAgreementProduct = None # (Boolean) 37 | self.coverAgreementExpense = None # (Boolean) 38 | self.coverSalesTax = None # (Boolean) 39 | self.carryOverUnused = None # (Boolean) 40 | self.allowOverruns = None # (Boolean) 41 | self.expiredDays = None # (Integer) 42 | self.limit = None # (Integer) 43 | self.expireWhenZero = None # (Boolean) 44 | self.chargeToFirm = None # (Boolean) 45 | self.employeeCompRate = None # (Enum) 46 | self.employeeCompNotExceed = None # (Enum) 47 | self.compHourlyRate = None # (Number) 48 | self.compLimitAmount = None # (Number) 49 | self.billCycleId = None # (Integer) 50 | self.billOneTimeFlag = None # (Boolean) 51 | self.billTermsId = None # (Integer) 52 | self.invoicingCycle = None # (Enum) 53 | self.billToCompany = None # (CompanyReference) 54 | self.billToSite = None # (SiteReference) 55 | self.billAmount = None # (Number) 56 | self.taxable = None # (Boolean) 57 | self.prorateFirstBill = None # (Number) 58 | self.billStartDate = None # (String) 59 | self.taxCodeId = None # (Integer) 60 | self.restrictDownPayment = None # (Boolean) 61 | self.invoiceDescription = None # (String) 62 | self.topComment = None # (Boolean) 63 | self.bottomComment = None # (Boolean) 64 | self.workRole = None # (WorkRoleReference) 65 | self.workType = None # (WorkTypeReference) 66 | self.projectTypeId = None # (Integer) 67 | self.invoiceTemplateSetupId = None # (Integer) 68 | self.billTime = None # (Enum) 69 | self.billExpenses = None # (Enum) 70 | self.billProducts = None # (Enum) 71 | self.billableTimeInvoice = None # (Boolean) 72 | self.billableExpenseInvoice = None # (Boolean) 73 | self.billableProductInvoice = None # (Boolean) 74 | self._info = None # (Metadata) 75 | self.periodType = None # (Enum) 76 | 77 | # initialize object with json dict 78 | super().__init__(json_dict) 79 | -------------------------------------------------------------------------------- /cw_controller.py: -------------------------------------------------------------------------------- 1 | # Parent class for module controller classes 2 | from ConnectPyse import API_URL, basic_auth 3 | from .restapi import Client 4 | 5 | 6 | class CWController(Client): 7 | def __init__(self): 8 | # self.module_url comes from child 9 | # self.module comes from child 10 | # self._class comes from child 11 | self.conditions = '' 12 | self.orderBy = '' 13 | self.childconditions = '' 14 | self.customfieldconditions = '' 15 | self.page = '' 16 | self.pageSize = '' 17 | super().__init__('{}/{}'.format(API_URL, self.module_url)) 18 | 19 | def _format_user_params(self): 20 | user_params = {} 21 | for param in ['conditions', 'orderBy', 'childconditions', 'customfieldconditions', 'page', 'pageSize']: 22 | user_params[param] = getattr(self, param) 23 | return user_params 24 | 25 | def _get(self): 26 | json_results = getattr(self, self.module).get(user_headers=basic_auth, 27 | user_params=self._format_user_params()) 28 | for json in json_results: 29 | yield self._class(json) 30 | 31 | def _create(self, a_object): 32 | # Ideally take the_item and submit that as the user_data 33 | try: 34 | clean_dict = {k: v for k, v in a_object.__dict__.items() if v} 35 | except Exception as e: 36 | print(repr(e)) 37 | return False 38 | an_instance = self._class( 39 | getattr(self, self.module).post(user_data=clean_dict, user_headers=basic_auth)) 40 | return an_instance 41 | 42 | def _get_count(self): 43 | json_results = getattr(self, self.module).get(the_id='count', user_headers=basic_auth, 44 | user_params=self._format_user_params()) 45 | count = json_results['count'] 46 | return count 47 | 48 | def _get_by_id(self, item_id): 49 | an_instance = self._class(getattr(self, self.module).get(the_id=item_id, user_headers=basic_auth)) 50 | return an_instance 51 | 52 | def _delete_by_id(self, item_id): 53 | return getattr(self, self.module).delete(the_id=item_id, user_headers=basic_auth) 54 | 55 | def _replace(self, item_id): # TODO: test 56 | an_instance = self._class( 57 | getattr(self, self.module).put(the_id=item_id, user_data=clean_dict, user_headers=basic_auth)) 58 | return an_instance 59 | 60 | def _update(self, item_id, key, value): 61 | # build PatchOperation dict 62 | patch_operation = [{ 63 | 'op': 'replace', 64 | 'path': key, 65 | 'value': value 66 | }] 67 | # call Patch method on API 68 | an_instance = self._class(getattr(self, self.module).patch(the_id=item_id, user_data=patch_operation, 69 | user_headers=basic_auth)) 70 | return an_instance 71 | 72 | def _merge(self, a_object, target_id): # TODO: test 73 | # try: 74 | # clean_dict = {k: v for k, v in a_object.__dict__.items() if v} 75 | # except Exception as e: 76 | # print(repr(e)) 77 | # return False 78 | # clean_dict['toCompanyId'] = target_id 79 | # response = getattr(self, self.module).post(user_data=clean_dict, the_id='/'.join([str(a_object.id), 'merge']), 80 | # user_headers=basic_auth) 81 | # return response 82 | pass 83 | 84 | def _post_dict(self, item_id, the_dict): # TODO: test 85 | # Ideally take the_item and submit that as the user_data 86 | try: 87 | clean_dict = {k: v for k, v in the_dict.items() if v} 88 | except Exception as e: 89 | print(repr(e)) 90 | return False 91 | an_instance = self._class( 92 | getattr(self, self.module).post(the_id=item_id, user_data=clean_dict, user_headers=basic_auth)) 93 | return an_instance 94 | 95 | -------------------------------------------------------------------------------- /finance/tax_code.py: -------------------------------------------------------------------------------- 1 | from ..cw_model import CWModel 2 | 3 | 4 | class TaxCode(CWModel): 5 | 6 | def __init__(self, json_dict=None): 7 | self.id = None # (Integer) 8 | self.identifier = None # *(String(8)) 9 | self.description = None # *(String(50)) 10 | self.invoiceCaption = None # *(String(25)) 11 | self.country = None # (CountryReference) 12 | self.effectiveDate = None # *(String) 13 | self.defaultFlag = None # (Boolean) 14 | self.displayOnInvoiceFlag = None # (Boolean) 15 | self.canadaCalculateGSTFlag = None # (Boolean) 16 | self.cancelDate = None # (String) 17 | self.levelOneRate = None # (Number) 18 | self.levelOneRateType = None # (Enum) 19 | self.levelOneTaxableMax = None # (Number) 20 | self.levelOneCaption = None # (String(25)) 21 | self.levelOneTaxCodeXref = None # (String(50)) 22 | self.levelOneAgencyXref = None # (String(100)) 23 | self.levelOneServicesFlag = None # (Boolean) 24 | self.levelOneExpensesFlag = None # (Boolean) 25 | self.levelOneProductsFlag = None # (Boolean) 26 | self.levelOneApplySingleUnitFlag = None # (Boolean) 27 | self.levelOneApplySingleUnitMin = None # (Number) 28 | self.levelOneApplySingleUnitMax = None # (Number) 29 | self.levelTwoRate = None # (Number) 30 | self.levelTwoRateType = None # (Enum) 31 | self.levelTwoTaxableMax = None # (Number) 32 | self.levelTwoCaption = None # (String(25)) 33 | self.levelTwoTaxCodeXref = None # (String(50)) 34 | self.levelTwoAgencyXref = None # (String(100)) 35 | self.levelTwoServicesFlag = None # (Boolean) 36 | self.levelTwoExpensesFlag = None # (Boolean) 37 | self.levelTwoProductsFlag = None # (Boolean) 38 | self.levelTwoApplySingleUnitFlag = None # (Boolean) 39 | self.levelTwoApplySingleUnitMin = None # (Number) 40 | self.levelTwoApplySingleUnitMax = None # (Number) 41 | self.levelThreeRate = None # (Number) 42 | self.levelThreeRateType = None # (Enum) 43 | self.levelThreeTaxableMax = None # (Number) 44 | self.levelThreeCaption = None # (String(25)) 45 | self.levelThreeTaxCodeXref = None # (String(50)) 46 | self.levelThreeAgencyXref = None # (String(100)) 47 | self.levelThreeServicesFlag = None # (Boolean) 48 | self.levelThreeExpensesFlag = None # (Boolean) 49 | self.levelThreeProductsFlag = None # (Boolean) 50 | self.levelThreeApplySingleUnitFlag = None # (Boolean) 51 | self.levelThreeApplySingleUnitMin = None # (Number) 52 | self.levelThreeApplySingleUnitMax = None # (Number) 53 | self.levelFourRate = None # (Number) 54 | self.levelFourRateType = None # (Enum) 55 | self.levelFourTaxableMax = None # (Number) 56 | self.levelFourCaption = None # (String(25)) 57 | self.levelFourTaxCodeXref = None # (String(50)) 58 | self.levelFourAgencyXref = None # (String(100)) 59 | self.levelFourServicesFlag = None # (Boolean) 60 | self.levelFourExpensesFlag = None # (Boolean) 61 | self.levelFourProductsFlag = None # (Boolean) 62 | self.levelFourApplySingleUnitFlag = None # (Boolean) 63 | self.levelFourApplySingleUnitMin = None # (Number) 64 | self.levelFourApplySingleUnitMax = None # (Number) 65 | self.levelFiveRate = None # (Number) 66 | self.levelFiveRateType = None # (Enum) 67 | self.levelFiveTaxableMax = None # (Number) 68 | self.levelFiveCaption = None # (String(25)) 69 | self.levelFiveTaxCodeXref = None # (String(50)) 70 | self.levelFiveAgencyXref = None # (String(100)) 71 | self.levelFiveServicesFlag = None # (Boolean) 72 | self.levelFiveExpensesFlag = None # (Boolean) 73 | self.levelFiveProductsFlag = None # (Boolean) 74 | self.levelFiveApplySingleUnitFlag = None # (Boolean) 75 | self.levelFiveApplySingleUnitMin = None # (Number) 76 | self.levelFiveApplySingleUnitMax = None # (Number) 77 | self._info = None # (Metadata) 78 | 79 | # initialize object with json dict 80 | super().__init__(json_dict) 81 | -------------------------------------------------------------------------------- /service/ticket.py: -------------------------------------------------------------------------------- 1 | from ..cw_model import CWModel 2 | 3 | 4 | class Ticket(CWModel): 5 | 6 | def __init__(self, json_dict=None): 7 | self.id = None # (Integer) 8 | self.summary = None # * (String(100)) 9 | self.recordType = None # (Enum) 10 | self.board = None # (BoardReference) 11 | self.status = None # (ServiceStatusReference) 12 | self.project = None # (ProjectReference) 13 | self.phase = None # (ProjectPhaseReference) 14 | self.wbsCode = None # (String(50)) 15 | self.company = None # * (CompanyReference) 16 | self.site = None # (SiteReference) 17 | self.siteName = None # (String(50)) 18 | self.addressLine1 = None # (String(50)) 19 | self.addressLine2 = None # (String(50)) 20 | self.city = None # (String(50)) 21 | self.stateIdentifier = None # (String(50)) 22 | self.zip = None # (String(12)) 23 | self.country = None # (CountryReference) 24 | self.contact = None # (ContactReference) 25 | self.contactPhoneNumber = None # (String(20)) 26 | self.contactPhoneExtension = None # (String(15)) 27 | self.contactEmailAddress = None # (String(250)) 28 | self.type = None # (ServiceTypeReference) 29 | self.subType = None # (ServiceSubTypeReference) 30 | self.item = None # (ServiceItemReference) 31 | self.team = None # (ServiceTeamReference) 32 | self.owner = None # (MemberReference) 33 | self.priority = None # (PriorityReference) 34 | self.serviceLocation = None # (ServiceLocationReference) 35 | self.source = None # (ServiceSourceReference) 36 | self.requiredDate = None # (String) 37 | self.budgetHours = None # (Number) 38 | self.opportunity = None # (OpportunityReference) 39 | self.agreement = None # (AgreementReference) 40 | self.severity = None # (Enum) 41 | self.impact = None # (Enum) 42 | self.externalXRef = None # (String(100)) 43 | self.poNumber = None # (String(50)) 44 | self.knowledgeBaseCategoryId = None # (Integer) 45 | self.knowledgeBaseSubCategoryId = None # (Integer) 46 | self.allowAllClientsPortalView = None # (Boolean) 47 | self.customerUpdatedFlag = None # (Boolean) 48 | self.automaticEmailContactFlag = None # (Boolean) 49 | self.automaticEmailResourceFlag = None # (Boolean) 50 | self.automaticEmailCcFlag = None # (Boolean) 51 | self.automaticEmailCc = None # (String(1000)) 52 | self.initialDescription = None # (String) 53 | self.initialInternalAnalysis = None # (String) 54 | self.initialResolution = None # (String) 55 | self.contactEmailLookup = None # (String) 56 | self.processNotifications = None # (Boolean) 57 | self.skipCallback = None # (Boolean) 58 | self.closedDate = None # (String) 59 | self.closedBy = None # (String) 60 | self.closedFlag = None # (Boolean) 61 | self.dateEntered = None # (String) 62 | self.enteredBy = None # (String) 63 | self.actualHours = None # (Number) 64 | self.approved = None # (Boolean) 65 | self.subBillingMethod = None # (Enum) 66 | self.subBillingAmount = None # (Number) 67 | self.subDateAccepted = None # (String) 68 | self.dateResolved = None # (String) 69 | self.dateResplan = None # (String) 70 | self.dateResponded = None # (String) 71 | self.resolveMinutes = None # (Integer) 72 | self.resPlanMinutes = None # (Integer) 73 | self.respondMinutes = None # (Integer) 74 | self.isInSla = None # (Boolean) 75 | self.knowledgeBaseLinkId = None # (Integer) 76 | self.resources = None # (String) 77 | self.parentTicketId = None # (Integer) 78 | self.hasChildTicket = None # (Boolean) 79 | self.knowledgeBaseLinkType = None # (Enum) 80 | self.billTime = None # (Enum) 81 | self.billExpenses = None # (Enum) 82 | self.billProducts = None # (Enum) 83 | self.predecessorType = None # (Enum) 84 | self.predecessorId = None # (Integer) 85 | self.predecessorClosedFlag = None # (Boolean) 86 | self.lagDays = None # (Integer) 87 | self.lagNonworkingDaysFlag = None # (Boolean) 88 | self.estimatedStartDate = None # (String) 89 | self.duration = None # (Integer) 90 | self.locationId = None # (Integer) 91 | self.businessUnitId = None # (Integer) 92 | self.mobileGuid = None # (Guid) 93 | self.sla = None # (SLAReference) 94 | self._info = None # (Metadata) 95 | self.customFields = None # (Array) 96 | 97 | # initialize object with json dict 98 | super().__init__(json_dict) 99 | -------------------------------------------------------------------------------- /system/member.py: -------------------------------------------------------------------------------- 1 | from cw_model import CWModel 2 | 3 | 4 | class Member(CWModel): 5 | 6 | def __init__(self, json_dict=None): 7 | self.adminFlag = None # (Boolean) 8 | self.allowExpensesEnteredAgainstCompaniesFlag = None # (Boolean) 9 | self.allowInCellEntryOnTimeSheet = None # (Boolean) 10 | self.billableForecast = None # (Number) 11 | self.calendar = None # (CalendarReference) 12 | self.calendarSyncIntegrationFlag = None # (Boolean) 13 | self.country = None # (CountryReference) 14 | self.dailyCapacity = None # (Number) 15 | self.daysTolerance = None # (Integer) 16 | self.defaultDepartmentId = None # *(Integer) 17 | self.defaultEmail = None # *(Enum) 18 | self.defaultLocationId = None # *(Integer) 19 | self.defaultPhone = None # *(Enum) 20 | self.disableOnlineFlag = None # (Boolean) 21 | self.enableLdapAuthenticationFlag = None # (Boolean) 22 | self.enableMobileFlag = None # (Boolean) 23 | self.enableMobileGpsFlag = None # (Boolean) 24 | self.enterTimeAgainstCompanyFlag = None # (Boolean) 25 | self.expenseApprover = None # *(MemberReference) 26 | self.firstName = None # *(String(30)) 27 | self.hideMemberInDispatchPortalFlag = None # (Boolean) 28 | self.hireDate = None # *(String) 29 | self.homeEmail = None # (String(250)) 30 | self.homeExtension = None # (String(10)) 31 | self.homePhone = None # (String(15)) 32 | self.hourlyCost = None # (Number) 33 | self.hourlyRate = None # (Number) 34 | self.id = None # (Integer) 35 | self.identifier = None # *(String(15)) 36 | self.inactiveDate = None # (String) 37 | self.inactiveFlag = None # (Boolean) 38 | self.includeInUtilizationReportingFlag = None # (Boolean) 39 | self.lastLogin = None # (String) 40 | self.lastName = None # *(String(30)) 41 | self.licenseClass = None # *(Enum) 42 | self.mapiName = None # (String) 43 | self.middleInitial = None # (String) 44 | self.minimumHours = None # (Number) 45 | self.mobileEmail = None # (String(250)) 46 | self.mobileExtension = None # (String(10)) 47 | self.mobilePhone = None # (String(15)) 48 | self.notes = None # (String) 49 | self.officeEmail = None # (String(250)) 50 | self.officeExtension = None # (String(10)) 51 | self.officePhone = None # (String(15)) 52 | self.projectDefaultBoard = None # (ProjectBoardReference) 53 | self.projectDefaultDepartmentId = None # (Integer) 54 | self.projectDefaultLocationId = None # (Integer) 55 | self.reportsTo = None # (MemberReference) 56 | self.requireExpenseEntryFlag = None # (Boolean) 57 | self.requireStartAndEndTimeOnTimeEntryFlag = None # (Boolean) 58 | self.requireTimeSheetEntryFlag = None # (Boolean) 59 | self.restrictDefaultSalesTerritoryFlag = None # (Boolean) 60 | self.restrictDefaultWarehouseBinFlag = None # (Boolean) 61 | self.restrictDefaultWarehouseFlag = None # (Boolean) 62 | self.restrictDepartmentFlag = None # (Boolean) 63 | self.restrictLocationFlag = None # (Boolean) 64 | self.restrictProjectDefaultDepartmentFlag = None # (Boolean) 65 | self.restrictProjectDefaultLocationFlag = None # (Boolean) 66 | self.restrictScheduleFlag = None # (Boolean) 67 | self.restrictServiceDefaultDepartmentFlag = None # (Boolean) 68 | self.restrictServiceDefaultLocationFlag = None # (Boolean) 69 | self.salesDefaultLocationId = None # *(Integer) 70 | self.scheduleCapacity = None # (Number) 71 | self.scheduleDefaultDepartmentId = None # (Integer) 72 | self.scheduleDefaultLocationId = None # (Integer) 73 | self.securityLevel = None # (String) 74 | self.securityLocationId = None # (Integer) 75 | self.securityRole = None # (SecurityRoleReference) 76 | self.serviceDefaultBoard = None # (BoardReference) 77 | self.serviceDefaultDepartmentId = None # (Integer) 78 | self.serviceDefaultLocationId = None # (Integer) 79 | self.serviceLocation = None # (ServiceLocationReference) 80 | self.serviceTeams = None # (Array) 81 | self.timeApprover = None # *(MemberReference) 82 | self.timeReminderEmailFlag = None # (Boolean) 83 | self.timeSheetStartDate = None # (String) 84 | self.timeZone = None # *(TimeZoneReference) 85 | self.title = None # (String(50)) 86 | self.type = None # (MemberTypeReference) 87 | self.vendorNumber = None # (String) 88 | self.warehouse = None # (WarehouseReference) 89 | self.warehouseBin = None # (WarehouseBinReference) 90 | self.workRole = None # *(WorkRoleReference) 91 | self.workType = None # (WorkTypeReference) 92 | self._info = None # (Metadata) 93 | self.System_Flag = None # (Boolean) 94 | 95 | # initialize object with json dict 96 | super().__init__(json_dict) 97 | -------------------------------------------------------------------------------- /restapi.py: -------------------------------------------------------------------------------- 1 | # -*- encoding: utf-8 -*- 2 | # 3 | # THE RESTAPI GENERIC CLIENT CONSUMER 4 | # Author: Sergio Berlotto 5 | # 6 | 7 | # Project died, so updates made by me: Joshua M Smith 8 | 9 | 10 | import requests as req 11 | import ujson 12 | 13 | 14 | class EndpointError(AttributeError): 15 | 16 | def __init__(self, endpoint): 17 | 18 | message = "Call Error: endpoint '{}' not allowed.".format( 19 | endpoint 20 | ) 21 | super(EndpointError, self).__init__(message) 22 | 23 | 24 | class ApiError(Exception): 25 | 26 | def __init__(self, method, route, status_code, server_message): 27 | 28 | message = """{method} {route} Return code: {status_code}\n 29 | Server message:{server_message}""".format(**locals()) 30 | super(ApiError, self).__init__(message) 31 | 32 | 33 | class Client(object): 34 | 35 | def __init__(self, root_path): 36 | self.root_path = root_path 37 | self.known_endpoints = [] 38 | 39 | def __getattribute__(self, attr): 40 | 41 | try: 42 | return super(Client, self).__getattribute__(attr) 43 | except AttributeError: 44 | return Endpoint( 45 | self.root_path, 46 | attr 47 | ) 48 | 49 | 50 | class Endpoint(object): 51 | 52 | def __init__(self, root_path, endpoint): 53 | self.endpoint = endpoint 54 | self.root_path = root_path 55 | 56 | def _url(self, path, *args): 57 | url = "{}/{}/".format(self.root_path, path) 58 | if args: 59 | url += "/".join([str(a) for a in args]) 60 | return url 61 | 62 | def _headers(self, others={}): 63 | """Return the default headers and others as necessary""" 64 | headers = { 65 | 'Content-Type': 'application/json' 66 | } 67 | 68 | for p in others.keys(): 69 | headers[p] = others[p] 70 | return headers 71 | 72 | def _params(self, others={}): 73 | params = {} 74 | for p in others.keys(): 75 | params[p] = others[p] 76 | return params 77 | 78 | def _formatreturn(self, resp): 79 | try: 80 | r = resp.json() 81 | except ValueError: 82 | #When the return is not a JSON 83 | r = resp.text 84 | return r 85 | 86 | def post(self, user_data, the_id=None, user_params={}, user_headers={}): 87 | 88 | strjsondata = ujson.dumps(user_data, ensure_ascii=False) 89 | 90 | if the_id: 91 | url = self._url(self.endpoint, the_id) 92 | else: 93 | url = self._url(self.endpoint) 94 | 95 | resp = req.post( 96 | url, 97 | data=strjsondata, 98 | headers=self._headers(user_headers), 99 | params=self._params(user_params), 100 | stream=False 101 | ) 102 | 103 | if resp.status_code != 201: 104 | raise ApiError( 105 | "GET", 106 | self.endpoint, 107 | resp.status_code, 108 | resp.text) 109 | else: 110 | return self._formatreturn(resp) 111 | 112 | def put(self, the_id, user_data, user_params={}, user_headers={}): 113 | 114 | strjsondata = ujson.dumps(user_data, ensure_ascii=False) 115 | 116 | resp = req.put( 117 | self._url(self.endpoint, the_id), 118 | data=strjsondata, 119 | headers=self._headers(user_headers), 120 | params=self._params(user_params) 121 | ) 122 | 123 | if resp.status_code != 200: 124 | raise ApiError( 125 | "GET", 126 | self.endpoint, 127 | resp.status_code, 128 | resp.text) 129 | else: 130 | return self._formatreturn(resp) 131 | 132 | def patch(self, the_id, user_data, user_params={}, user_headers={}): 133 | 134 | strjsondata = ujson.dumps(user_data, ensure_ascii=False) 135 | 136 | resp = req.patch( 137 | self._url(self.endpoint, the_id), 138 | data=strjsondata, 139 | headers=self._headers(user_headers), 140 | params=self._params(user_params) 141 | ) 142 | 143 | if resp.status_code != 200: 144 | raise ApiError( 145 | "GET", 146 | self.endpoint, 147 | resp.status_code, 148 | resp.text) 149 | else: 150 | return self._formatreturn(resp) 151 | 152 | def get(self, the_id=None, level=None, user_params={}, user_headers={}): 153 | 154 | if the_id: 155 | url = self._url(self.endpoint, the_id) 156 | else: 157 | url = self._url(self.endpoint) 158 | 159 | resp = req.get( 160 | url, 161 | headers=self._headers(user_headers), 162 | params=self._params(user_params) 163 | ) 164 | 165 | if resp.status_code != 200: 166 | raise ApiError( 167 | "GET", 168 | self.endpoint, 169 | resp.status_code, 170 | resp.text) 171 | else: 172 | return self._formatreturn(resp) 173 | 174 | def delete(self, level=None, user_params={}, user_headers={}): 175 | 176 | resp = req.delete( 177 | self._url(self.endpoint), 178 | headers=self._headers(user_headers), 179 | params=self._params(user_params) 180 | ) 181 | 182 | if resp.status_code != 200: 183 | raise ApiError( 184 | "DELETE", 185 | self.endpoint, 186 | resp.status_code, 187 | resp.text) 188 | else: 189 | return self._formatreturn(resp) 190 | --------------------------------------------------------------------------------