diff --git a/FuelSDK/ExactTargetWSDL.xml b/FuelSDK/ExactTargetWSDL.xml deleted file mode 100644 index ceddc35..0000000 --- a/FuelSDK/ExactTargetWSDL.xml +++ /dev/null @@ -1,9151 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Deprecated. Use ID. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Deprecated. Please use ValueType. - - - - - - - - - - Actual data type of the value that will be stored in this property - - Reserved for future use. - - - - - - - - - - ExactTarget data type of the property - - - - - - - - - - Indicates whether the property can be created. If true, then this property value can be set in a create call. - - Reserved for future use. - - - - - - - - - - Indicates whether the property can be updated. If true, then this property value can be set in an update call. - - - - - - - - - - Indicates whether the object can be retrieved via the retrieve call. - - - - - - - - - - Indicates whether the object can be queried via the query call. - - Reserved for future use. - - - - - - - - - - Indicates whether the property is filterable. If true, then this property can be specified in a SimpleFilterPart in a retrieve call. - - Reserved for future use. - - - - - - - - - - Indicates if the property is specific to a partner. - - Reserved for future use. - - - - - - - - - - Indicates if the property is specific to the Account. - - Reserved for future use. - - - - - - - - - - Deprecated. - - - - - - - - - - - - Deprecated. - - - - - - - - - - Reserved for future use. - - - - - - - - - - Reserved for future use. - - - - - - - - - - Text label that is displayed next to the field in the user interface. - - - - - - - - - - - - - - Minimum length of the data. - - - - - - - - - - Maximum length of the data. - - - - - - - - - - Minimum value that this property can be set to. - - - - - - - - - - Maximum value that this property can be set to. - - - - - - - - - - Indicates whether the property must have a value specified. - - - - - - - - - - Indicates whether the property is viewable to the end-user in the profile center. - - - - - - - - - - Indicates whether the property is editable by the end-user in the profile center. - - - - - - - - - - Indicates whether the property can contain a null value. - - Reserved for future use. - - - - - - - - - - Indicates if the property has a restricted list of valid values. - - - - - - - - - - List of valid values. - - - - - - - - - - - - - - - - - - - - Indicates whether the property is a send time attribute. - - - - - - - - - - Indicates the placement of this property within the list of properties. - - - - - - - - - - Indicates the object types of the referenced objects. - - Reserved for future use. - - - - - - - - - - - - - - - - - - - - The name of the relationship (e.g. One-to-One, One-to-Many). - - Reserved for future use. - - - - - - - - - - Reserved for future use. - - - - - - - - - - Reserved for future use. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - PerformRequest has been deprecated. See PerformRequestMsg. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - deprecated - - Always will be set to Continuous. For additional fee, TriggeredSendDefinition.Priority can be used to adjust priority. - - - - - - - - - - - - - - - - - - - - deprecated - - Always will be set to 1. For additional fee, TriggeredSendDefinition.Priority can be used to adjust priority. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Deprecated. Use SendSourceDataExtension instead. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - deprecated - - As of Fall 2007 SenderProfile.FromName should be used. - - - - - - - - - - deprecated - - As of Fall 2007 SenderProfile.FromAddress should be used. - - - - - - - - - - - - deprecated - - As of Fall 2007 DeliveryProfile.SourceAddressType should be used. - - - - - - - - - - deprecated - - As of Fall 2007 DeliveryProfile.PrivateIP should be used. - - - - - - - - - - deprecated - - As of Fall 2007 DeliveryProfile.DomainType should be used. - - - - - - - - - - deprecated - - As of Fall 2007 DeliveryProfile.PrivateDomain should be used. - - - - - - - - - - deprecated - - As of Fall 2007 DeliveryProfile.HeaderSalutationSource should be used. - - - - - - - - - - deprecated - - As of Fall 2007 DeliveryProfile.HeaderContentArea should be used. - - - - - - - - - - deprecated - - As of Fall 2007 DeliveryProfile.FooterSalutationSource should be used. - - - - - - - - - - deprecated - - As of Fall 2007 DeliveryProfile.FooterContentArea should be used. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Deprecated. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Deprecated. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Maybe add verb here... - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Deprecated. Use DataRetentionPeriod instead. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Only supports Retrieve - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Create objects - - - - - - - - - - Retrieve objects - - - - - - - - - - Update objects - - - - - - - - - - Delete objects - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Perform ad hoc data extracts - - - - - - - - - - Get Current System Status - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ExactTarget Partner API - - - - - - - - - - diff --git a/FuelSDK/Public_WebAppTests/test_ET_Client_errors.py b/FuelSDK/Public_WebAppTests/test_ET_Client_errors.py new file mode 100644 index 0000000..f29056c --- /dev/null +++ b/FuelSDK/Public_WebAppTests/test_ET_Client_errors.py @@ -0,0 +1,129 @@ +import copy +from unittest import TestCase +from FuelSDK import ET_Client +from FuelSDK.exceptions import ConfigurationException, AuthException, WSDLException + + +class TestET_Client_Errors(TestCase): + + @classmethod + def setUpClass(cls): + cls.base_params = { + 'clientid': 'clientid', + 'clientsecret': 'clientsecret', + 'defaultwsdl': 'https://webservice.exacttarget.com/etframework.wsdl', + 'authenticationurl': 'https://auth.exacttargetapis.com/v1/requestToken?legacy=1', + 'baseapiurl': 'https://webservice.exacttarget.com/', + 'soapendpoint': 'https://webservice.exacttarget.com/', + 'wsdl_file_local_loc': '/tmp/ExactTargetWSDL.s6.xml', + 'useOAuth2Authentication': 'False', + 'accountId': 'accountId', + 'scope': 'scope', + 'applicationType': 'server', + 'redirectURI': 'https://webservice.exacttarget.com/redirect', + 'authorizationCode': 'authorizationCode', + } + + def test_should_raise_configexception_if_wrong_application_type(self): + params = copy.deepcopy(self.base_params) + params['applicationType'] = 'dummy' + + with self.assertRaises(ConfigurationException): + ET_Client(False, False, params=params) + + def test_should_raise_configexception_if_no_authurl_and_oauth2_enabled(self): + params = copy.deepcopy(self.base_params) + params['useOAuth2Authentication'] = 'True' + params['authenticationurl'] = '' + + with self.assertRaises(ConfigurationException): + ET_Client(False, False, params=params) + + def test_should_raise_configexception_if_public_app_and_no_redirecturi(self): + params = copy.deepcopy(self.base_params) + params['applicationType'] = 'public' + params['redirectURI'] = '' + + with self.assertRaises(ConfigurationException): + ET_Client(False, False, params=params) + + def test_should_raise_configexception_if_web_app_and_no_redirecturi(self): + params = copy.deepcopy(self.base_params) + params['applicationType'] = 'web' + params['redirectURI'] = '' + + with self.assertRaises(ConfigurationException): + ET_Client(False, False, params=params) + + def test_should_raise_configexception_if_public_app_and_no_authcode(self): + params = copy.deepcopy(self.base_params) + params['applicationType'] = 'public' + params['authorizationCode'] = '' + + with self.assertRaises(ConfigurationException): + ET_Client(False, False, params=params) + + def test_should_raise_configexception_if_web_app_and_no_authcode(self): + params = copy.deepcopy(self.base_params) + params['applicationType'] = 'web' + params['authorizationCode'] = '' + + with self.assertRaises(ConfigurationException): + ET_Client(False, False, params=params) + + def test_should_raise_configexception_if_public_app_and_no_clientid(self): + params = copy.deepcopy(self.base_params) + params['applicationType'] = 'public' + params['clientid'] = '' + + with self.assertRaises(ConfigurationException): + ET_Client(False, False, params=params) + + def test_should_raise_configexception_if_web_app_and_no_clientid(self): + params = copy.deepcopy(self.base_params) + params['applicationType'] = 'web' + params['clientid'] = '' + + with self.assertRaises(ConfigurationException): + ET_Client(False, False, params=params) + + def test_should_raise_configexception_if_web_app_and_no_clientsecret(self): + params = copy.deepcopy(self.base_params) + params['applicationType'] = 'web' + params['clientsecret'] = '' + + with self.assertRaises(ConfigurationException): + ET_Client(False, False, params=params) + + def test_should_raise_configexception_if_server_app_and_no_clientid(self): + params = copy.deepcopy(self.base_params) + params['applicationType'] = 'server' + params['clientid'] = '' + + with self.assertRaises(ConfigurationException): + ET_Client(False, False, params=params) + + def test_should_raise_configexception_if_server_app_and_no_clientsecret(self): + params = copy.deepcopy(self.base_params) + params['applicationType'] = 'server' + params['clientsecret'] = '' + + with self.assertRaises(ConfigurationException): + ET_Client(False, False, params=params) + + def test_should_raise_authexception_if_refresh_token_http_failure(self): + with self.assertRaises(AuthException): + ET_Client(False, False, params=self.base_params) + + def test_should_raise_authexception_if_refresh_oauth2_token_http_failure(self): + params = copy.deepcopy(self.base_params) + params['useOAuth2Authentication'] = 'True' + with self.assertRaises(AuthException): + ET_Client(False, False, params=params) + + def test_should_raise_wsdlexception_if_wrong_wsdl_url(self): + params = copy.deepcopy(self.base_params) + params['defaultwsdl'] = 'https://www.example.com/etframework.wsdl' + with self.assertRaises(WSDLException): + ET_Client(True, False, params=params) + \ No newline at end of file diff --git a/FuelSDK/client.py b/FuelSDK/client.py index 1ebbfb8..bffbe75 100644 --- a/FuelSDK/client.py +++ b/FuelSDK/client.py @@ -12,6 +12,7 @@ from FuelSDK.objects import ET_DataExtension,ET_Subscriber +from FuelSDK.exceptions import ConfigurationException, AuthException, WSDLException class ET_Client(object): @@ -138,7 +139,7 @@ def configure_client(self, get_server_wsdl, params, tokenResponse): if self.is_none_or_empty_or_blank(self.auth_url) == True: if self.use_oAuth2_authentication == "True": - raise Exception('authenticationurl (Auth TSE) is mandatory when using OAuth2 authentication') + raise ConfigurationException('authenticationurl (Auth TSE) is mandatory when using OAuth2 authentication') else: self.auth_url = 'https://auth.exacttargetapis.com/v1/requestToken?legacy=1' @@ -170,6 +171,9 @@ def configure_client(self, get_server_wsdl, params, tokenResponse): elif "FUELSDK_APPLICATION_TYPE" in os.environ: self.application_type = os.environ["FUELSDK_APPLICATION_TYPE"] + if not self.is_none_or_empty_or_blank(self.application_type) and self.application_type not in ["public", "web", "server"]: + raise ConfigurationException('Unsupported application type') + if self.is_none_or_empty_or_blank(self.application_type): self.application_type = "server" @@ -182,15 +186,15 @@ def configure_client(self, get_server_wsdl, params, tokenResponse): if self.application_type in ["public", "web"]: if self.is_none_or_empty_or_blank(self.authorization_code) or self.is_none_or_empty_or_blank(self.redirect_URI): - raise Exception('authorizationCode or redirectURI is null: For Public/Web Apps, the authorizationCode and redirectURI must be ' + raise ConfigurationException('authorizationCode or redirectURI is null: For Public/Web Apps, the authorizationCode and redirectURI must be ' 'passed when instantiating ET_Client or must be provided in environment variables/config file') if self.application_type == "public": if self.is_none_or_empty_or_blank(self.client_id): - raise Exception('clientid is null: clientid must be passed when instantiating ET_Client or must be provided in environment variables / config file') + raise ConfigurationException('clientid is null: clientid must be passed when instantiating ET_Client or must be provided in environment variables / config file') else: # application_type is server or web if self.is_none_or_empty_or_blank(self.client_id) or self.is_none_or_empty_or_blank(self.client_secret): - raise Exception('clientid or clientsecret is null: clientid and clientsecret must be passed when instantiating ET_Client ' + raise ConfigurationException('clientid or clientsecret is null: clientid and clientsecret must be passed when instantiating ET_Client ' 'or must be provided in environment variables / config file') ## get the JWT from the params if passed in...or go to the server to get it @@ -223,7 +227,12 @@ def load_wsdl(self, wsdl_url, wsdl_file_local_location, get_server_wsdl = False) if not os.path.exists(file_location) or os.path.getsize(file_location) == 0: #if there is no local copy or local copy is empty then go get it... self.retrieve_server_wsdl(wsdl_url, file_location) elif get_server_wsdl: - r = requests.head(wsdl_url) + try: + r = requests.head(wsdl_url) + r.raise_for_status() + except requests.exceptions.HTTPError as e: + raise WSDLException("Error when getting the WSDL file's metadata: " + str(e)) + if r is not None and 'last-modified' in r.headers: server_wsdl_updated = time.strptime(r.headers['last-modified'], '%a, %d %b %Y %H:%M:%S %Z') file_wsdl_updated = time.gmtime(os.path.getmtime(file_location)) @@ -237,7 +246,12 @@ def retrieve_server_wsdl(self, wsdl_url, file_location): """ get the WSDL from the server and save it locally """ - r = requests.get(wsdl_url) + try: + r = requests.get(wsdl_url) + r.raise_for_status() + except requests.exceptions.HTTPError as e: + raise WSDLException("Error when getting the WSDL file: " + str(e)) + f = open(file_location, 'w') f.write(r.text) @@ -252,7 +266,7 @@ def build_soap_client(self): if self.use_oAuth2_authentication == 'True': element_oAuth = Element('fueloauth', ns=('etns', 'http://exacttarget.com')) - element_oAuth.setText(self.authToken); + element_oAuth.setText(self.authToken) self.soap_client.set_options(soapheaders=(element_oAuth)) else: element_oAuth = Element('oAuth', ns=('etns', 'http://exacttarget.com')) @@ -290,11 +304,16 @@ def refresh_token(self, force_refresh = False): self.auth_url = self.auth_url.strip() self.auth_url = self.auth_url + legacyString - r = requests.post(self.auth_url, data=json.dumps(payload), headers=headers) + try: + r = requests.post(self.auth_url, data=json.dumps(payload), headers=headers) + r.raise_for_status() + except requests.exceptions.HTTPError as e: + raise AuthException('Unable to validate App Keys(ClientID/ClientSecret) provided: ' + str(e)) + tokenResponse = r.json() if 'accessToken' not in tokenResponse: - raise Exception('Unable to validate App Keys(ClientID/ClientSecret) provided: ' + repr(r.json())) + raise AuthException('Unable to validate App Keys(ClientID/ClientSecret) provided: ' + repr(r.json())) self.authToken = tokenResponse['accessToken'] self.authTokenExpiration = time.time() + tokenResponse['expiresIn'] @@ -319,11 +338,16 @@ def refresh_token_with_oAuth2(self, force_refresh=False): auth_endpoint = self.auth_url.strip() + '/v2/token' - r = requests.post(auth_endpoint, data=json.dumps(payload), headers=headers) + try: + r = requests.post(auth_endpoint, data=json.dumps(payload), headers=headers) + r.raise_for_status() + except requests.exceptions.HTTPError as e: + raise AuthException('Unable to validate App Keys(ClientID/ClientSecret) provided: ' + str(e)) + tokenResponse = r.json() if 'access_token' not in tokenResponse: - raise Exception('Unable to validate App Keys(ClientID/ClientSecret) provided: ' + repr(r.json())) + raise AuthException('Unable to validate App Keys(ClientID/ClientSecret) provided: ' + repr(r.json())) self.authToken = tokenResponse['access_token'] self.authTokenExpiration = time.time() + tokenResponse['expires_in'] @@ -403,7 +427,7 @@ def get_soap_endpoint(self): else: return default_endpoint - except Exception as e: + except: return default_endpoint def AddSubscriberToList(self, emailAddress, listIDs, subscriberKey = None): diff --git a/FuelSDK/exceptions.py b/FuelSDK/exceptions.py new file mode 100644 index 0000000..d87e533 --- /dev/null +++ b/FuelSDK/exceptions.py @@ -0,0 +1,19 @@ +class ET_Client_Exception(Exception): + """ + Base class for all exception happening at the ET_Client level + """ + +class ConfigurationException(ET_Client_Exception): + """ + Raised when an error related to the Client configuration occurs + """ + +class AuthException(ET_Client_Exception): + """ + Raised when the authentication to the Client fails + """ + +class WSDLException(ET_Client_Exception): + """ + Raised when getting the WSDL file fails + """ \ No newline at end of file