SalesforceXyToolsCore/Python上でSobjectを作成・更新・削除

The original page link

SalesforceXyToolsCore/Python上でSobjectを作成・更新・削除

Topic

IDでSobjectの取得

Salesforce組織のユーザ名、パスワード、Apiバージョン、Product/Sandboxを設定してください。

Accountを取得する

from SalesforceXytoolsCore import *
import pprint

config = {
    "api_version": 42.0, 
    "username": "sfdc username", 
    "password": "sfdc password", 
    "security_token": "", 
    "is_sandbox": True
}

soap_api = Soap(username=config["username"], 
                password=config["password"], 
                security_token=config["security_token"], 
                sandbox=config["is_sandbox"],
                version=config["api_version"]
                )

print('hello SalesforceXytoolsCore Test start')
Account = soap_api.get_sobject("Account")

"""
get a Sobject in Salesforce
"""
acc_id="set your sobject id"
account1 = Account.get(acc_id)
pprint.pprint(account1)

外部キーでSobjectの取得

"""
get a Sobject by External ID
"""
account1 = Account.get_by_custom_id('My_Custom_ID__c', 'custom_id')
pprint.pprint(account1)

IDでSobjectの更新

"""
update a Sobject in Salesforce
"""
acc_id="set your sobject id"
account1 = Account.update(acc_id,{'LastName': 'sfdc'})
pprint.pprint(account1)

IDでSobjectの削除

"""
delete a Sobject in Salesforce
"""
acc_id="set your sobject id"
Account.delete(acc_id)

SalesforceXyToolsCore/Python上でApexログを取得

The original page link

SalesforceXyToolsCore/Python上でApexログを取得

Topic

Apexログを取得

  • Salesforce組織のユーザ名、パスワード、Apiバージョン、Product/Sandboxを設定してください。
from SalesforceXytoolsCore import *
import pprint

config = {
    "api_version": 42.0, 
    "username": "sfdc username", 
    "password": "sfdc password", 
    "security_token": "", 
    "is_sandbox": True
}

tooling_api = ToolingApi(username=config["username"], 
                password=config["password"], 
                security_token=config["security_token"], 
                sandbox=config["is_sandbox"],
                version=config["api_version"]
                )

"""get apex log"""
log_id = '07LXXXXXXXXXXXXXXXXXXXX'
result = tooling_api.getLog(log_id)
pprint.pprint(result)

SalesforceXyToolsCore/Python上でApexScriptを実行する

The original page link

SalesforceXyToolsCore/Python上でApexScriptを実行する

Topic

ApexScriptを実行する

Salesforce組織のユーザ名、パスワード、Apiバージョン、Product/Sandboxを設定してください。

from SalesforceXytoolsCore import *
import pprint

config = {
    "api_version": 42.0, 
    "username": "sfdc username", 
    "password": "sfdc password", 
    "security_token": "", 
    "is_sandbox": True
}

soap_api = Soap(username=config["username"], 
                password=config["password"], 
                security_token=config["security_token"], 
                sandbox=config["is_sandbox"],
                version=config["api_version"]
                )

"""
Run Apex Script
"""
apex_string = "System.debug('hello world');"
debug_levels = {
        "DB": "Info", 
        "System": "DEBUG", 
        "Workflow": "INFO", 
        "Callout": "INFO", 
        "Validation": "INFO", 
        "Apex_Code": "DEBUG", 
        "Apex_Profiling": "INFO"
    }
result = soap_api.execute_anonymous(apex_string, debug_levels)
pprint.pprint(result)

結果ログを確認:

{'debugLog': '42.0 '
             'APEX_CODE,DEBUG;APEX_PROFILING,INFO;CALLOUT,INFO;DB,INFO;SYSTEM,DEBUG;VALIDATION,INFO;WORKFLOW,INFO\n'
             "Execute Anonymous: System.debug('hello world');\n"
             '22:22:14.19 '
             '()|USER_INFO|[EXTERNAL]|xxxxxxxxxxxxxxxxxxxxxxxxx|日本標準時|GMT+09:00\n'
             '22:22:14.19 ()|EXECUTION_STARTED\n'
             '22:22:14.19 '
             '()|CODE_UNIT_STARTED|[EXTERNAL]|execute_anonymous_apex\n'
             '22:22:14.19 ()|USER_DEBUG|[1]|DEBUG|hello world\n'
             '22:22:14.19 ()|CUMULATIVE_LIMIT_USAGE\n'
             '22:22:14.19 ()|LIMIT_USAGE_FOR_NS|(default)|\n'
             '  Number of SOQL queries: 0 out of 100\n'
             '  Number of query rows: 0 out of 50000\n'
             '  Number of SOSL queries: 0 out of 20\n'
             '  Number of DML statements: 0 out of 150\n'
             '  Number of DML rows: 0 out of 10000\n'
             '  Maximum CPU time: 0 out of 10000\n'
             '  Maximum heap size: 0 out of 6000000\n'
             '  Number of callouts: 0 out of 100\n'
             '  Number of Email Invocations: 0 out of 10\n'
             '  Number of future calls: 0 out of 50\n'
             '  Number of queueable jobs added to the queue: 0 out of 50\n'
             '  Number of Mobile Apex push calls: 0 out of 10\n'
             '\n'
             '22:22:14.19 ()|CUMULATIVE_LIMIT_USAGE_END\n'
             '\n'
             '22:22:14.19 '
             '()|CODE_UNIT_FINISHED|execute_anonymous_apex\n'
             '22:22:14.19 ()|EXECUTION_FINISHED\n',
 'success': True}

SalesforceXyToolsCore/Python上でSalesforce組織のSoqlを実行する

The original page link

SalesforceXyToolsCore/Python上でSalesforce組織のSoqlを実行する

Topic

メールテンプレートのフォルダーを取得する

  • Salesforce組織のユーザ名、パスワード、Apiバージョン、Product/Sandboxを設定してください。
from SalesforceXytoolsCore import *
import pprint

config = {
    "api_version": 42.0, 
    "username": "sfdc username", 
    "password": "sfdc password", 
    "security_token": "", 
    "is_sandbox": True
}

soap_api = Soap(username=config["username"], 
                password=config["password"], 
                security_token=config["security_token"], 
                sandbox=config["is_sandbox"],
                version=config["api_version"]
                )

"""
Run Soql Queries
"""
soql_string = "SELECT Id, Name FROM User LIMIT 3"
result = soap_api.query(soql_string)
pprint.pprint(result)

結果確認

OrderedDict([('totalSize', 3),
             ('done', True),
             ('records',
              [OrderedDict([('attributes',
                             OrderedDict([('type', 'User'),
                                          ('url',
                                           '/services/data/v42.0/sobjects/User/005XXXXXXXXXXXXXXX')])),
                            ('Id', '005XXXXXXXXXXXXXXX'),
                            ('Name', 'Process Automated')]),
               OrderedDict([('attributes',
                             OrderedDict([('type', 'User'),
                                          ('url',
                                           '/services/data/v42.0/sobjects/User/005XXXXXXXXXXXXXXX')])),
                            ('Id', '005XXXXXXXXXXXXXXX'),
                            ('Name', 'サイトゲストユーザ')]),
               OrderedDict([('attributes',
                             OrderedDict([('type', 'User'),
                                          ('url',
                                           '/services/data/v42.0/sobjects/User/005XXXXXXXXXXXXXXX')])),
                            ('Id', '005XXXXXXXXXXXXXXX'),
                            ('Name', 'SFDC Exia')])])])

その他方法

query_more

soap_api.query_more(sobject_id)
soap_api.query_more("/services/data/v43.0/query/sobject_id", True)

query_allですべてのデータを取得する

soap_api.query_all("SELECT Id, Email FROM Contact WHERE LastName = 'Jones'")

search

soap_api.search("FIND {exia}")

quick_search

soap_api.quick_search("exia")

SalesforceXyToolsCore/Python上でテストクラスを実行する

The original page link

SalesforceXyToolsCore/Python上でテストクラスを実行する

Topic

テストクラスを実行する

Salesforce組織のユーザ名、パスワード、Apiバージョン、Product/Sandboxを設定してください。

from SalesforceXytoolsCore import *
import pprint

config = {
    "api_version": 42.0, 
    "username": "sfdc username", 
    "password": "sfdc password", 
    "security_token": "", 
    "is_sandbox": True
}

tooling_api = ToolingApi(username=config["username"], 
                password=config["password"], 
                security_token=config["security_token"], 
                sandbox=config["is_sandbox"],
                version=config["api_version"]
                )

"""run test class"""
id_list = ['xxx', 'xxxx']
tooling_api.runTestSynchronous(id_list)

SalesforceXyToolsCore/Python上でSalesforceのREST APIへアクセス

The original page link

SalesforceXyToolsCore/Python上でSalesforceのREST APIへアクセス

Topic

Apexclass内容を取得する

  • Salesforce組織のユーザ名、パスワード、Apiバージョン、Product/Sandboxを設定してください。
from SalesforceXytoolsCore import *
import pprint

config = {
    "api_version": 42.0, 
    "username": "sfdc username", 
    "password": "sfdc password", 
    "security_token": "", 
    "is_sandbox": True
}

rest_api = RestApi(username=config["username"], 
                password=config["password"], 
                security_token=config["security_token"], 
                sandbox=config["is_sandbox"],
                version=config["api_version"]
                )

"""
Run Rest API : query apexclass
"""
sel_string = "Select Id, Name From ApexClass Limit 3"
params = {'q': sel_string}
result = rest_api.restful('tooling/query', params)
pprint.pprint(result)

結果を確認

OrderedDict([('size', 3),
             ('totalSize', 3),
             ('done', True),
             ('queryLocator', None),
             ('entityTypeName', 'ApexClass'),
             ('records',
              [OrderedDict([('attributes',
                             OrderedDict([('type', 'ApexClass'),
                                          ('url',
                                           '/services/data/v42.0/tooling/sobjects/ApexClass/01pXXXXXXXXXXXXX')])),
                            ('Id', '01pXXXXXXXXXXXXX'),
                            ('Name', 'OpportXXXXXXX')]),
               OrderedDict([('attributes',
                             OrderedDict([('type', 'ApexClass'),
                                          ('url',
                                           '/services/data/v42.0/tooling/sobjects/ApexClass/01pXXXXXXXXXXXXX')])),
                            ('Id', '01pXXXXXXXXXXXXX'),
                            ('Name', 'DaoXXXXXXXXXXXXX')]),
               OrderedDict([('attributes',
                             OrderedDict([('type', 'ApexClass'),
                                          ('url',
                                           '/services/data/v42.0/tooling/sobjects/ApexClass/01pXXXXXXXXXXXXX')])),
                            ('Id', '01pXXXXXXXXXXXXX'),
                            ('Name', 'ExiaXXXXXXXXXXXXX')])])])

ApexCodeCoverageカバー率を取得する

"""
Run Rest API : query ApexCodeCoverage
"""
sel_string = "SELECT Id, ApexTestClassId, TestMethodName, ApexClassorTriggerId, NumLinesCovered, NumLinesUncovered, Coverage FROM ApexCodeCoverage"
params = {'q': sel_string}
result = rest_api.restful(
    path='tooling/query', 
    params=params,
    method='GET'
)
pprint.pprint(result)

Sobjects一覧を取得する

"""
Run Rest API : search sobjects
"""
result = rest_api.call_rest(
    method='GET',
    path='/services/data/v37.0/sobjects', 
    params={},
)
pprint.pprint(result)

結果を確認

{'encoding': 'UTF-8',
 'maxBatchSize': 200,
 'sobjects': [
              {'activateable': False,
               'createable': True,
               'custom': False,
               'customSetting': False,
               'deletable': True,
               'deprecatedAndHidden': False,
               'feedEnabled': True,
               'keyPrefix': '006',
               'label': 'Opportunity',
               'labelPlural': 'Opportunities',
               'layoutable': True,
               'mergeable': False,
               'mruEnabled': True,
               'name': 'Opportunity',
               'queryable': True,
               'replicateable': True,
               'retrieveable': True,
               'searchable': True,
               'triggerable': True,
               'undeletable': True,
               'updateable': True,
               'urls': {'approvalLayouts': '/services/data/v37.0/sobjects/Opportunity/describe/approvalLayouts',
                        'compactLayouts': '/services/data/v37.0/sobjects/Opportunity/describe/compactLayouts',
                        'defaultValues': '/services/data/v37.0/sobjects/Opportunity/defaultValues?recordTypeId&fields',
                        'describe': '/services/data/v37.0/sobjects/Opportunity/describe',
                        'layouts': '/services/data/v37.0/sobjects/Opportunity/describe/layouts',
                        'listviews': '/services/data/v37.0/sobjects/Opportunity/listviews',
                        'quickActions': '/services/data/v37.0/sobjects/Opportunity/quickActions',
                        'rowTemplate': '/services/data/v37.0/sobjects/Opportunity/{ID}',
                        'sobject': '/services/data/v37.0/sobjects/Opportunity'}},
    ................
    ................
    .....省略.......
    ................
    ................
 ]
}

SalesforceXyToolsCore/Python上でSalesforce組織を説明するメタデータを取得する

The original page link

SalesforceXyToolsCore/Python上でSalesforce組織を説明するメタデータを取得する

Topic

  • SalesforceXyToolsCoreを使ってDescribeMetadataを実行して、DescribeMetadataを実行してSalesforce組織を説明するメタデータを取得します。この情報には Apex クラスおよびトリガ、カスタムオブジェクト、標準オブジェクトのカスタム項目、アプリケーションを定義するタブセット、および他の多くのメタデータ型が含まれています。

DescribeMetadataの実行

  • Salesforce組織のユーザ名、パスワード、Apiバージョン、Product/Sandboxを設定してください。
from SalesforceXytoolsCore import *
import pprint

config = {
    "api_version": 42.0, 
    "username": "sfdc username", 
    "password": "sfdc password", 
    "security_token": "", 
    "is_sandbox": True
}

meta_api = MetadataApi(username=config["username"], 
                password=config["password"], 
                security_token=config["security_token"], 
                sandbox=config["is_sandbox"],
                version=config["api_version"]
                )

"""
describeMetadata :
    This call retrieves the metadata that describes your organization. 
    This information includes Apex classes and triggers, custom objects, custom fields on standard objects, tab sets that define an app, and many other metadata types.
"""
result = meta_api.describeMetadata()
pprint.pprint(result)
# print(json.dumps(result, indent=4))

結果確認

OrderedDict([('metadataObjects',
              [OrderedDict([('directoryName', 'installedPackages'),
                            ('inFolder', 'false'),
                            ('metaFile', 'false'),
                            ('suffix', 'installedPackage'),
                            ('xmlName', 'InstalledPackage')]),
               OrderedDict([('childXmlNames', 'CustomLabel'),
                            ('directoryName', 'labels'),
                            ('inFolder', 'false'),
                            ('metaFile', 'false'),
                            ('suffix', 'labels'),
                            ('xmlName', 'CustomLabels')]),
               OrderedDict([('directoryName', 'staticresources'),
                            ('inFolder', 'false'),
                            ('metaFile', 'true'),
                            ('suffix', 'resource'),
                            ('xmlName', 'StaticResource')]),
               OrderedDict([('directoryName', 'scontrols'),
                            ('inFolder', 'false'),
                            ('metaFile', 'true'),
                            ('suffix', 'scf'),
                            ('xmlName', 'Scontrol')]),
               OrderedDict([('directoryName', 'certs'),
                            ('inFolder', 'false'),
                            ('metaFile', 'true'),
                            ('suffix', 'crt'),
                            ('xmlName', 'Certificate')]),
               OrderedDict([('directoryName', 'aura'),
                            ('inFolder', 'false'),
                            ('metaFile', 'false'),
                            ('xmlName', 'AuraDefinitionBundle')]),
               OrderedDict([('directoryName', 'lightningcomponents'),
                            ('inFolder', 'false'),
                            ('metaFile', 'false'),
                            ('xmlName', 'LightningComponentBundle')]),
               OrderedDict([('directoryName', 'components'),
                            ('inFolder', 'false'),
                            ('metaFile', 'true'),
                            ('suffix', 'component'),
                            ('xmlName', 'ApexComponent')]),
               OrderedDict([('directoryName', 'pages'),
                            ('inFolder', 'false'),
                            ('metaFile', 'true'),
                            ('suffix', 'page'),
                            ('xmlName', 'ApexPage')]),
               OrderedDict([('directoryName', 'queues'),
                            ('inFolder', 'false'),
                            ('metaFile', 'false'),
                            ('suffix', 'queue'),
                            ('xmlName', 'Queue')]),
               OrderedDict([('directoryName', 'CaseSubjectParticles'),
                            ('inFolder', 'false'),
                            ('metaFile', 'false'),
                            ('suffix', 'CaseSubjectParticle'),
                            ('xmlName', 'CaseSubjectParticle')]),
               OrderedDict([('directoryName', 'dataSources'),
                            ('inFolder', 'false'),
                            ('metaFile', 'false'),
                            ('suffix', 'dataSource'),
                            ('xmlName', 'ExternalDataSource')]),
               OrderedDict([('directoryName', 'namedCredentials'),
                            ('inFolder', 'false'),
                            ('metaFile', 'false'),
                            ('suffix', 'namedCredential'),
                            ('xmlName', 'NamedCredential')]),
               OrderedDict([('directoryName', 'externalServiceRegistrations'),
                            ('inFolder', 'false'),
                            ('metaFile', 'false'),
                            ('suffix', 'externalServiceRegistration'),
                            ('xmlName', 'ExternalServiceRegistration')]),
               OrderedDict([('directoryName', 'roles'),
                            ('inFolder', 'false'),
                            ('metaFile', 'false'),
                            ('suffix', 'role'),
                            ('xmlName', 'Role')]),
               OrderedDict([('directoryName', 'groups'),
                            ('inFolder', 'false'),
                            ('metaFile', 'false'),
                            ('suffix', 'group'),
                            ('xmlName', 'Group')]),
               OrderedDict([('directoryName', 'globalValueSets'),
                            ('inFolder', 'false'),
                            ('metaFile', 'false'),
                            ('suffix', 'globalValueSet'),
                            ('xmlName', 'GlobalValueSet')]),
               OrderedDict([('directoryName', 'standardValueSets'),
                            ('inFolder', 'false'),
                            ('metaFile', 'false'),
                            ('suffix', 'standardValueSet'),
                            ('xmlName', 'StandardValueSet')]),
               OrderedDict([('directoryName', 'customPermissions'),
                            ('inFolder', 'false'),
                            ('metaFile', 'false'),
                            ('suffix', 'customPermission'),
                            ('xmlName', 'CustomPermission')]),
               OrderedDict([('childXmlNames',
                             ['CustomField',
                              'Index',
                              'BusinessProcess',
                              'CompactLayout',
                              'RecordType',
                              'WebLink',
                              'ValidationRule',
                              'SharingReason',
                              'ListView',
                              'FieldSet']),
                            ('directoryName', 'objects'),
                            ('inFolder', 'false'),
                            ('metaFile', 'false'),
                            ('suffix', 'object'),
                            ('xmlName', 'CustomObject')]),
               OrderedDict([('directoryName', 'reportTypes'),
                            ('inFolder', 'false'),
                            ('metaFile', 'false'),
                            ('suffix', 'reportType'),
                            ('xmlName', 'ReportType')]),
               OrderedDict([('directoryName', 'reports'),
                            ('inFolder', 'true'),
                            ('metaFile', 'false'),
                            ('suffix', 'report'),
                            ('xmlName', 'Report')]),
               OrderedDict([('directoryName', 'dashboards'),
                            ('inFolder', 'true'),
                            ('metaFile', 'false'),
                            ('suffix', 'dashboard'),
                            ('xmlName', 'Dashboard')]),
               OrderedDict([('directoryName', 'analyticSnapshots'),
                            ('inFolder', 'false'),
                            ('metaFile', 'false'),
                            ('suffix', 'snapshot'),
                            ('xmlName', 'AnalyticSnapshot')]),
               OrderedDict([('directoryName', 'feedFilters'),
                            ('inFolder', 'false'),
                            ('metaFile', 'false'),
                            ('suffix', 'feedFilter'),
                            ('xmlName', 'CustomFeedFilter')]),
               OrderedDict([('directoryName', 'layouts'),
                            ('inFolder', 'false'),
                            ('metaFile', 'false'),
                            ('suffix', 'layout'),
                            ('xmlName', 'Layout')]),
               OrderedDict([('directoryName', 'documents'),
                            ('inFolder', 'true'),
                            ('metaFile', 'true'),
                            ('xmlName', 'Document')]),
               OrderedDict([('directoryName', 'weblinks'),
                            ('inFolder', 'false'),
                            ('metaFile', 'false'),
                            ('suffix', 'weblink'),
                            ('xmlName', 'CustomPageWebLink')]),
               OrderedDict([('directoryName', 'letterhead'),
                            ('inFolder', 'false'),
                            ('metaFile', 'false'),
                            ('suffix', 'letter'),
                            ('xmlName', 'Letterhead')]),
               OrderedDict([('directoryName', 'email'),
                            ('inFolder', 'true'),
                            ('metaFile', 'true'),
                            ('suffix', 'email'),
                            ('xmlName', 'EmailTemplate')]),
               OrderedDict([('directoryName', 'quickActions'),
                            ('inFolder', 'false'),
                            ('metaFile', 'false'),
                            ('suffix', 'quickAction'),
                            ('xmlName', 'QuickAction')]),
               OrderedDict([('directoryName', 'flexipages'),
                            ('inFolder', 'false'),
                            ('metaFile', 'false'),
                            ('suffix', 'flexipage'),
                            ('xmlName', 'FlexiPage')]),
               OrderedDict([('directoryName', 'tabs'),
                            ('inFolder', 'false'),
                            ('metaFile', 'false'),
                            ('suffix', 'tab'),
                            ('xmlName', 'CustomTab')]),
               OrderedDict([('directoryName', 'customApplicationComponents'),
                            ('inFolder', 'false'),
                            ('metaFile', 'false'),
                            ('suffix', 'customApplicationComponent'),
                            ('xmlName', 'CustomApplicationComponent')]),
               OrderedDict([('directoryName', 'applications'),
                            ('inFolder', 'false'),
                            ('metaFile', 'false'),
                            ('suffix', 'app'),
                            ('xmlName', 'CustomApplication')]),
               OrderedDict([('directoryName', 'EmbeddedServiceConfig'),
                            ('inFolder', 'false'),
                            ('metaFile', 'false'),
                            ('suffix', 'EmbeddedServiceConfig'),
                            ('xmlName', 'EmbeddedServiceConfig')]),
               OrderedDict([('directoryName', 'EmbeddedServiceBranding'),
                            ('inFolder', 'false'),
                            ('metaFile', 'false'),
                            ('suffix', 'EmbeddedServiceBranding'),
                            ('xmlName', 'EmbeddedServiceBranding')]),
               OrderedDict([('directoryName', 'flows'),
                            ('inFolder', 'false'),
                            ('metaFile', 'false'),
                            ('suffix', 'flow'),
                            ('xmlName', 'Flow')]),
               OrderedDict([('directoryName', 'flowDefinitions'),
                            ('inFolder', 'false'),
                            ('metaFile', 'false'),
                            ('suffix', 'flowDefinition'),
                            ('xmlName', 'FlowDefinition')]),
               OrderedDict([('directoryName', 'eventSubscriptions'),
                            ('inFolder', 'false'),
                            ('metaFile', 'false'),
                            ('suffix', 'subscription'),
                            ('xmlName', 'EventSubscription')]),
               OrderedDict([('directoryName', 'eventDeliveries'),
                            ('inFolder', 'false'),
                            ('metaFile', 'false'),
                            ('suffix', 'delivery'),
                            ('xmlName', 'EventDelivery')]),
               OrderedDict([('childXmlNames',
                             ['WorkflowFieldUpdate',
                              'WorkflowKnowledgePublish',
                              'WorkflowTask',
                              'WorkflowAlert',
                              'WorkflowSend',
                              'WorkflowOutboundMessage',
                              'WorkflowRule']),
                            ('directoryName', 'workflows'),
                            ('inFolder', 'false'),
                            ('metaFile', 'false'),
                            ('suffix', 'workflow'),
                            ('xmlName', 'Workflow')]),
               OrderedDict([('childXmlNames', 'AssignmentRule'),
                            ('directoryName', 'assignmentRules'),
                            ('inFolder', 'false'),
                            ('metaFile', 'false'),
                            ('suffix', 'assignmentRules'),
                            ('xmlName', 'AssignmentRules')]),
               OrderedDict([('childXmlNames', 'AutoResponseRule'),
                            ('directoryName', 'autoResponseRules'),
                            ('inFolder', 'false'),
                            ('metaFile', 'false'),
                            ('suffix', 'autoResponseRules'),
                            ('xmlName', 'AutoResponseRules')]),
               OrderedDict([('childXmlNames', 'EscalationRule'),
                            ('directoryName', 'escalationRules'),
                            ('inFolder', 'false'),
                            ('metaFile', 'false'),
                            ('suffix', 'escalationRules'),
                            ('xmlName', 'EscalationRules')]),
               OrderedDict([('directoryName', 'postTemplates'),
                            ('inFolder', 'false'),
                            ('metaFile', 'false'),
                            ('suffix', 'postTemplate'),
                            ('xmlName', 'PostTemplate')]),
               OrderedDict([('directoryName', 'approvalProcesses'),
                            ('inFolder', 'false'),
                            ('metaFile', 'false'),
                            ('suffix', 'approvalProcess'),
                            ('xmlName', 'ApprovalProcess')]),
               OrderedDict([('directoryName', 'homePageComponents'),
                            ('inFolder', 'false'),
                            ('metaFile', 'false'),
                            ('suffix', 'homePageComponent'),
                            ('xmlName', 'HomePageComponent')]),
               OrderedDict([('directoryName', 'homePageLayouts'),
                            ('inFolder', 'false'),
                            ('metaFile', 'false'),
                            ('suffix', 'homePageLayout'),
                            ('xmlName', 'HomePageLayout')]),
               OrderedDict([('directoryName', 'objectTranslations'),
                            ('inFolder', 'false'),
                            ('metaFile', 'false'),
                            ('suffix', 'objectTranslation'),
                            ('xmlName', 'CustomObjectTranslation')]),
               OrderedDict([('directoryName', 'globalValueSetTranslations'),
                            ('inFolder', 'false'),
                            ('metaFile', 'false'),
                            ('suffix', 'globalValueSetTranslation'),
                            ('xmlName', 'GlobalValueSetTranslation')]),
               OrderedDict([('directoryName', 'standardValueSetTranslations'),
                            ('inFolder', 'false'),
                            ('metaFile', 'false'),
                            ('suffix', 'standardValueSetTranslation'),
                            ('xmlName', 'StandardValueSetTranslation')]),
               OrderedDict([('directoryName', 'classes'),
                            ('inFolder', 'false'),
                            ('metaFile', 'true'),
                            ('suffix', 'cls'),
                            ('xmlName', 'ApexClass')]),
               OrderedDict([('directoryName', 'triggers'),
                            ('inFolder', 'false'),
                            ('metaFile', 'true'),
                            ('suffix', 'trigger'),
                            ('xmlName', 'ApexTrigger')]),
               OrderedDict([('directoryName', 'testSuites'),
                            ('inFolder', 'false'),
                            ('metaFile', 'false'),
                            ('suffix', 'testSuite'),
                            ('xmlName', 'ApexTestSuite')]),
               OrderedDict([('directoryName', 'profiles'),
                            ('inFolder', 'false'),
                            ('metaFile', 'false'),
                            ('suffix', 'profile'),
                            ('xmlName', 'Profile')]),
               OrderedDict([('directoryName', 'permissionsets'),
                            ('inFolder', 'false'),
                            ('metaFile', 'false'),
                            ('suffix', 'permissionset'),
                            ('xmlName', 'PermissionSet')]),
               OrderedDict([('directoryName', 'customMetadata'),
                            ('inFolder', 'false'),
                            ('metaFile', 'false'),
                            ('suffix', 'md'),
                            ('xmlName', 'CustomMetadata')]),
               OrderedDict([('directoryName', 'profilePasswordPolicies'),
                            ('inFolder', 'false'),
                            ('metaFile', 'false'),
                            ('suffix', 'profilePasswordPolicy'),
                            ('xmlName', 'ProfilePasswordPolicy')]),
               OrderedDict([('directoryName', 'profileSessionSettings'),
                            ('inFolder', 'false'),
                            ('metaFile', 'false'),
                            ('suffix', 'profileSessionSetting'),
                            ('xmlName', 'ProfileSessionSetting')]),
               OrderedDict([('directoryName', 'datacategorygroups'),
                            ('inFolder', 'false'),
                            ('metaFile', 'false'),
                            ('suffix', 'datacategorygroup'),
                            ('xmlName', 'DataCategoryGroup')]),
               OrderedDict([('directoryName', 'remoteSiteSettings'),
                            ('inFolder', 'false'),
                            ('metaFile', 'false'),
                            ('suffix', 'remoteSite'),
                            ('xmlName', 'RemoteSiteSetting')]),
               OrderedDict([('directoryName', 'cspTrustedSites'),
                            ('inFolder', 'false'),
                            ('metaFile', 'false'),
                            ('suffix', 'cspTrustedSite'),
                            ('xmlName', 'CspTrustedSite')]),
               OrderedDict([('childXmlNames', 'MatchingRule'),
                            ('directoryName', 'matchingRules'),
                            ('inFolder', 'false'),
                            ('metaFile', 'false'),
                            ('suffix', 'matchingRule'),
                            ('xmlName', 'MatchingRules')]),
               OrderedDict([('directoryName', 'duplicateRules'),
                            ('inFolder', 'false'),
                            ('metaFile', 'false'),
                            ('suffix', 'duplicateRule'),
                            ('xmlName', 'DuplicateRule')]),
               OrderedDict([('directoryName', 'cleanDataServices'),
                            ('inFolder', 'false'),
                            ('metaFile', 'false'),
                            ('suffix', 'cleanDataService'),
                            ('xmlName', 'CleanDataService')]),
               OrderedDict([('directoryName', 'authproviders'),
                            ('inFolder', 'false'),
                            ('metaFile', 'false'),
                            ('suffix', 'authprovider'),
                            ('xmlName', 'AuthProvider')]),
               OrderedDict([('directoryName', 'eclair'),
                            ('inFolder', 'false'),
                            ('metaFile', 'true'),
                            ('suffix', 'geodata'),
                            ('xmlName', 'EclairGeoData')]),
               OrderedDict([('directoryName', 'sites'),
                            ('inFolder', 'false'),
                            ('metaFile', 'false'),
                            ('suffix', 'site'),
                            ('xmlName', 'CustomSite')]),
               OrderedDict([('directoryName', 'channelLayouts'),
                            ('inFolder', 'false'),
                            ('metaFile', 'false'),
                            ('suffix', 'channelLayout'),
                            ('xmlName', 'ChannelLayout')]),
               OrderedDict([('directoryName', 'contentassets'),
                            ('inFolder', 'false'),
                            ('metaFile', 'true'),
                            ('suffix', 'asset'),
                            ('xmlName', 'ContentAsset')]),
               OrderedDict([('childXmlNames',
                             ['SharingOwnerRule', 'SharingCriteriaRule']),
                            ('directoryName', 'sharingRules'),
                            ('inFolder', 'false'),
                            ('metaFile', 'false'),
                            ('suffix', 'sharingRules'),
                            ('xmlName', 'SharingRules')]),
               OrderedDict([('directoryName', 'sharingSets'),
                            ('inFolder', 'false'),
                            ('metaFile', 'false'),
                            ('suffix', 'sharingSet'),
                            ('xmlName', 'SharingSet')]),
               OrderedDict([('directoryName', 'communities'),
                            ('inFolder', 'false'),
                            ('metaFile', 'false'),
                            ('suffix', 'community'),
                            ('xmlName', 'Community')]),
               OrderedDict([('directoryName', 'ChatterExtensions'),
                            ('inFolder', 'false'),
                            ('metaFile', 'false'),
                            ('suffix', 'ChatterExtension'),
                            ('xmlName', 'ChatterExtension')]),
               OrderedDict([('directoryName', 'callCenters'),
                            ('inFolder', 'false'),
                            ('metaFile', 'false'),
                            ('suffix', 'callCenter'),
                            ('xmlName', 'CallCenter')]),
               OrderedDict([('directoryName', 'connectedApps'),
                            ('inFolder', 'false'),
                            ('metaFile', 'false'),
                            ('suffix', 'connectedApp'),
                            ('xmlName', 'ConnectedApp')]),
               OrderedDict([('directoryName', 'appMenus'),
                            ('inFolder', 'false'),
                            ('metaFile', 'false'),
                            ('suffix', 'appMenu'),
                            ('xmlName', 'AppMenu')]),
               OrderedDict([('directoryName', 'delegateGroups'),
                            ('inFolder', 'false'),
                            ('metaFile', 'false'),
                            ('suffix', 'delegateGroup'),
                            ('xmlName', 'DelegateGroup')]),
               OrderedDict([('directoryName', 'siteDotComSites'),
                            ('inFolder', 'false'),
                            ('metaFile', 'true'),
                            ('suffix', 'site'),
                            ('xmlName', 'SiteDotCom')]),
               OrderedDict([('directoryName', 'networkBranding'),
                            ('inFolder', 'false'),
                            ('metaFile', 'true'),
                            ('suffix', 'networkBranding'),
                            ('xmlName', 'NetworkBranding')]),
               OrderedDict([('directoryName', 'brandingSets'),
                            ('inFolder', 'false'),
                            ('metaFile', 'false'),
                            ('suffix', 'brandingSet'),
                            ('xmlName', 'BrandingSet')]),
               OrderedDict([('directoryName', 'flowCategories'),
                            ('inFolder', 'false'),
                            ('metaFile', 'false'),
                            ('suffix', 'flowCategory'),
                            ('xmlName', 'FlowCategory')]),
               OrderedDict([('directoryName', 'lightningBolts'),
                            ('inFolder', 'false'),
                            ('metaFile', 'false'),
                            ('suffix', 'lightningBolt'),
                            ('xmlName', 'LightningBolt')]),
               OrderedDict([('directoryName', 'lightningExperienceThemes'),
                            ('inFolder', 'false'),
                            ('metaFile', 'false'),
                            ('suffix', 'lightningExperienceTheme'),
                            ('xmlName', 'LightningExperienceTheme')]),
               OrderedDict([('directoryName', 'samlssoconfigs'),
                            ('inFolder', 'false'),
                            ('metaFile', 'false'),
                            ('suffix', 'samlssoconfig'),
                            ('xmlName', 'SamlSsoConfig')]),
               OrderedDict([('directoryName', 'corsWhitelistOrigins'),
                            ('inFolder', 'false'),
                            ('metaFile', 'false'),
                            ('suffix', 'corsWhitelistOrigin'),
                            ('xmlName', 'CorsWhitelistOrigin')]),
               OrderedDict([('directoryName', 'actionLinkGroupTemplates'),
                            ('inFolder', 'false'),
                            ('metaFile', 'false'),
                            ('suffix', 'actionLinkGroupTemplate'),
                            ('xmlName', 'ActionLinkGroupTemplate')]),
               OrderedDict([('directoryName', 'transactionSecurityPolicies'),
                            ('inFolder', 'false'),
                            ('metaFile', 'false'),
                            ('suffix', 'transactionSecurityPolicy'),
                            ('xmlName', 'TransactionSecurityPolicy')]),
               OrderedDict([('directoryName', 'synonymDictionaries'),
                            ('inFolder', 'false'),
                            ('metaFile', 'false'),
                            ('suffix', 'synonymDictionary'),
                            ('xmlName', 'SynonymDictionary')]),
               OrderedDict([('directoryName', 'pathAssistants'),
                            ('inFolder', 'false'),
                            ('metaFile', 'false'),
                            ('suffix', 'pathAssistant'),
                            ('xmlName', 'PathAssistant')]),
               OrderedDict([('directoryName', 'LeadConvertSettings'),
                            ('inFolder', 'false'),
                            ('metaFile', 'false'),
                            ('suffix', 'LeadConvertSetting'),
                            ('xmlName', 'LeadConvertSettings')]),
               OrderedDict([('directoryName', 'cachePartitions'),
                            ('inFolder', 'false'),
                            ('metaFile', 'false'),
                            ('suffix', 'cachePartition'),
                            ('xmlName', 'PlatformCachePartition')]),
               OrderedDict([('directoryName', 'topicsForObjects'),
                            ('inFolder', 'false'),
                            ('metaFile', 'false'),
                            ('suffix', 'topicsForObjects'),
                            ('xmlName', 'TopicsForObjects')]),
               OrderedDict([('directoryName', 'emailservices'),
                            ('inFolder', 'false'),
                            ('metaFile', 'false'),
                            ('suffix', 'xml'),
                            ('xmlName', 'EmailServicesFunction')]),
               OrderedDict([('directoryName', 'settings'),
                            ('inFolder', 'false'),
                            ('metaFile', 'false'),
                            ('suffix', 'settings'),
                            ('xmlName', 'Settings')])]),
             ('organizationNamespace', None),
             ('partialSaveAllowed', 'true'),
             ('testRequired', 'false')])