Bibliotecas de cliente Python

    SDK Python para Zoho CRM

    O SDK Python para APIs Zoho CRM fornece pacote para APIs Zoho CRM. Portanto, a chamada de uma API do Zoho CRM do aplicativo Python cliente é apenas uma chamada de método.

    O SDK Python oferece suporte à autenticação de um único usuário e também de vários usuários.

    Registro um cliente Zoho

    Como as APIs do Zoho CRM são autenticadas com os padrões OAuth2, você deve registrar seu aplicativo cliente com o Zoho. Para registrar seu aplicativo:

    1. Visite esta página https://accounts.zoho.com/developerconsole.
    2. Clique em "Adicionar ID de Cliente".
    3. Insira o Nome do Cliente, o Domínio do Cliente e a URI de Redirecionamento.
    4. Selecione o Tipo de Cliente como "Baseado na Web".
    5. Clique em "Criar"
    6. Seu aplicativo será criado e exibido agora.
    7. O ID do Cliente e o Segredo do Cliente podem ser encontrados clicando em Opções → Editar.
      (Opções é o ícone de reticências no canto direito).

    Configuração

    O SDK Python pode ser instalado por meio de "pip". Pip é uma ferramenta para gerenciamento de dependência em Python. O SDK espera o seguinte do aplicativo cliente

    • O aplicativo cliente deve ter Python 2.7 e posteriores.
      • https://www.python.org/downloads/
    • O aplicativo cliente deve ter solicitações python sendo instaladas
      • http://docs.python-requests.org/en/master/user/install/
    • O SDK Python deve ser instalado por meio de pip.
    • O método ZCRMRestClient.initialize() deve ser chamado na inicialização do aplicativo
    • MySQL deve estar em execução na mesma máquina que serve na porta padrão 3306.
      • O nome do banco deve ser "zohooauth".
      • Deve haver uma tabela "oauthtokens" com as colunas "identificador de usuário"(varchar(100)), "accesstoken"(varchar(100)), "refreshtoken"(varchar(100)), "expirytime"(bigint).

    Se token_persistence_path for fornecido no arquivo oauth_configuration.properties, a persistência ocorrerá apenas no arquivo. Nesse caso, não há nenhuma necessidade de MySQL.

    Crie um arquivo vazio com o nome zcrm_oauthtokens.txt no token_persistence_path mencionado.

    Instalação do SDK por meio de pip

    Instalar Pip (se não instalado)

    Consulte o documento a seguir para instalar pip

    https://pip.pypa.io/en/stable/installing/

    Instalar SDK

    Veja como instalar o SDK Python

    • Execute o comando a seguir:

      pip install zcrmsdk

    O SDK Python será instalado, e um pacote com o nome "zcrmsdk" será criado no diretório de instalação de python (por exemplo, "/Library/Python/2.7/site-packages").

    Atualiza o SDK

    • Execute este comando para atualizar o SDK Python para a versão mais recente.

      pip install --upgrade zcrmsdk

    Configurações

    Os detalhes do Cliente OAuth devem ser fornecidos ao SDK como um arquivo de propriedade. No SDK, incluímos um arquivo de configuração (oauth_configuration.properties). Insira os respectivos valores nesse arquivo. Você pode encontrar esse arquivo em "zcrmsdk/resources".

    Preencha os valores para as seguintes chaves sozinhas.

    Com base em seu domínio (EU,CN), altere o valor de accounts_url. Valor padrão definido como domínio US.

    client_id=
    client_secret=
    redirect_uri=
    accounts_url=https://accounts.zoho.com
    token_persistence_path=

    • client_id, client_secret e redirect_uri são as configurações do cliente OAuth obtidas após registrar o cliente Zoho.
    • access_type deve ser definido como offline apenas porque o cliente OAuth não é suportado pelo SDK Python agora.
    • token_persistence_path é o caminho para armazenar os tokens OAuth relacionados no arquivo. Se isso estiver definido, não haverá nenhuma necessidade de banco de dados para persistência. A persistência acontece no arquivo somente.

    Inclua o caminho absoluto em configuration.properties para a chave "applicationLogFilePath" para armazenar os registros. Você pode encontrar esse arquivo em "zcrmsdk/resources". Esse arquivo deve registrar as exceções durante o uso do SDK Python.

    Preencha o valor para a seguinte chave sozinha. Se o caminho do log não for fornecido, os logs não serão armazenados, mas você poderá vê-los no console

    applicationLogFilePath=

    Para fazer chamadas de API para a conta de sandbox, altere o valor da seguinte chave para true. Por padrão, o valor é false.

    sandbox=true

    Caso seu aplicativo precise apenas de uma autenticação de usuário único, você precisará definir o usuário do ID de e-mail no arquivo configurations.properties conforme descrito abaixo.

    currentUserEmail=user@email.com

    Para trabalhar com a autenticação de vários usuários, você precisa definir o usuário EmailId no encadeamento atual como um atributo.

    threading.current_thread().__setattr__('current_user_email','user@email.com')

    Você pode usar o acima para autenticação de usuário único também, mas é recomendado prosseguir com a configuração do ID de e-mail no arquivo configuration.properties.

    Se você não definir o e-mail do usuário no encadeamento atual, o SDK o esperará do arquivo configuration.properties. Se o e-mail do usuário não estiver definido em nenhum desses dois, o SDK Python lançará uma exceção.

    Inicialização

    O aplicativo estará pronto para ser inicializado após a definição do arquivo de configuração OAuth.

    Geração de concessão autoautorizada e de token de atualização

    Para aplicativos de autocliente, o token de concessão autoautorizada deve ser gerado no Zoho Developer Console (https://accounts.zoho.com/developerconsole)

    1. Visite https://accounts.zoho.com/developerconsole
    2. Clique em OpçõesAutocliente do cliente o qual você deseja autorizar.
    3. Insira um ou mais escopos válidos do Zoho CRM (separados por vírgula) que deseja autorizar no campo "Escopo" e escolha a hora de expiração. Forneça o escopo "aaaserver.profile.READ" em conjunto com os escopos do Zoho CRM.
    4. Copie o token de concessão para backup.
    5. Gere refresh_token a partir do token de concessão criando uma solicitação POST com o URL abaixo

      https://accounts.zoho.com/oauth/v2/token?code={grant_token}&redirect_uri={redirect_uri}&client_id={client_id}&client_secret={client_secret}&grant_type=authorization_code

    6. Copie o token de atualização para backup.

    Observe que o token de concessão gerado é válido apenas pelo tempo estipulado durante a geração. Portanto, os tokens de acesso e de atualização devem ser gerados durante esse período.

    Geração de token de acesso

    O token de acesso pode ser gerado pelo token de concessão ou token de atualização. Qualquer um dos dois métodos a seguir é suficiente.

    Geração de tokens de acesso a partir do token de concessão

    O seguinte trecho de código deve ser executado a partir da classe principal para se obter o token de acesso.

    Cole o token de concessão gerado no literal da string mencionada. Este é um processo único.

    ZCRMRestClient.initialize()
    oauth_client = ZohoOAuth.get_client_instance()
    grant_token="paste_grant_token_here"
    oauth_tokens = oauth_client.generate_access_token(grant_token)

    Geração de tokens de acesso a partir do token de atualização

    O seguinte trecho de código deve ser executado a partir da classe principal para se obter o token de acesso.

    Cole o token de atualização gerado no literal da string mencionada. Este é um processo único.

    ZCRMRestClient.initialize()
    oauth_client = ZohoOAuth.get_client_instance()
    refresh_token="paste_refresh_token_here"
    user_identifier="provide_user_identifier_like_email_here"
    oauth_tokens = oauth_client.generate_access_token_from_refresh_token(refresh_token,user_identifier)

    Após a execução bem-sucedida do trecho de código acima, os tokens de acesso e de atualização gerados persistirão de acordo com a classe do manipulador de persistência.

    Uma vez que os tokens OAuth persistiram, chamadas de API subsequentes usarão os tokens de acesso e de atualização persistentes. O SDK Python cuidará da atualização do token de acesso usando o token de atualização como e quando necessário.

    Inicialização de aplicativo

    O SDK Python exigirá a seguinte linha de código chamada sempre que o aplicativo cliente for iniciado.

    ZCRMRestClient.initialize()

    Quando o SDK tiver sido inicializado pela linha acima, você poderá usar quaisquer APIs do SDK para obter resultados adequados.

    Uso do SDK

    Adicione a linha abaixo aos arquivos Python do aplicativo cliente onde você gostaria de usar o SDK Python.

    import zcrmsdk

    Com isso, você pode acessar todas as funcionalidades do SDK Python.

    Para acessar um módulo ou classe, use zcrmsdk.ClassName

    Hierarquia de classes

    Todas as entidades do Zoho CRM são modeladas como módulos tendo classes, métodos e variáveis de instância aplicáveis a essa entidade específica. ZCRMRestClient é a classe básica do SDK Python. ZCRMRestClient tem métodos para obter instâncias de várias outras entidades do Zoho CRM. Ela está no módulo RestClient.

    As relações de classe e a hierarquia do SDK segue a hierarquia da entidade dentro do Zoho CRM. A hierarquia de classe de várias entidades do Zoho CRM é mostrada abaixo:

    ZCRMRestClient
       -ZCRMOrganization
        -ZCRMUser
         -ZCRMUserTheme
         -ZCRMUserCustomizeInfo
        -ZCRMRole
        -ZCRMProfile
         -ZCRMPermission
         -ZCRMProfileSection
          -ZCRMProfileCategory
       -ZCRMModule
        -ZCRMLayout
         -ZCRMSection
          -ZCRMField
          -ZCRMPickListValue
          -ZCRMLookupField
         -ZCRMLeadConvertMapping
          -ZCRMLeadConvertMappingField
        -ZCRMCustomView
         -ZCRMCustomViewCategory
         -ZCRMCustomViewCriteria
        -ZCRMRelatedListProperties
        -ZCRMModuleRelatedList
        -ZCRMRecord
         -ZCRMNote
         -ZCRMAttachment
         -ZCRMInventoryLineItem
          -ZCRMTax
         -ZCRMEventParticipant
         -ZCRMPriceBookPricing
         -ZCRMModuleRelation
         -ZCRMJunctionRecord
         -ZCRMTrashRecord

    Conforme aparece na hierarquia, cada classe de entidade terá variáveis de instância para buscar suas próprias propriedades e buscar dados de suas entidades filhas imediatas por uma chamada da API.

    Por exemplo: um módulo do objeto do Zoho CRM (ZCRMModule) terá variáveis de instância para obter propriedades de um módulo como nome de exibição, ID de módulo etc. E também terá variáveis de instância para buscar todos os objetos filhos (como ZCRMLayout).

    Instanciar objeto

    Nem sempre é eficaz seguir a hierarquia de classe completa desde o topo para buscar dados de uma entidade em algum nível inferior, pois isso pode envolver chamadas de API em cada nível. Para lidar com isso, cada classe de entidade terá um método get_instance() para obter seu próprio objeto fictício e variáveis de instância para obter os objetos fictícios de suas entidades filhas.

    Observe que o método get_instance() não tem nenhuma de suas propriedades preenchidas, pois não dispara uma chamada de API. Isso retorna apenas um objeto fictício que deve ser usado somente para acessar os métodos não estáticos da classe.

    Resumindo,

    • ZCRMRestClient.get_module("Contatos") deve retornar o módulo Contatos real, que tem todas as propriedades do módulo Contatos preenchidas por uma chamada de API
    • ZCRMRestClient.get_module_instance("Contatos") retornará um objeto ZCRMModule fictício que se refere ao módulo Contatos, não preenchido com propriedades, pois isso não faz uma chamada de API.

    Portanto, para obter registros de um módulo, você não precisa iniciar desde o ZCRMRestClient. Em vez disso, você pode obter uma instância com ZCRMModule.get_instance() e depois chamar seu método não estático get_records() pela instância criada. Isso evitaria a chamada de API, que teria sido acionada para preencher o objeto ZCRMModule.

    Acesso a propriedades do registro

    Como as propriedades do registro são dinâmicas entre os módulos, temos apenas os campos comuns (como created_time, created_by, proprietário etc.) como propriedades padrão do ZCRMRecord. Todas as outras propriedades de registro estão disponíveis como um dicionário no objeto ZCRMRecord.

    Para acessar os valores de campo individuais de um registro, use os métodos getter e setter disponíveis. As chaves do dicionário de propriedades de registro são nomes de API dos campos do módulo. Os nomes de API de todos os módulos estão disponíveis em Configuração → Extensões & APIs → APIs → API do CRM → Nomes de API.

    Para obter um valor de campo, use record.get_field_value(field_api_name). Para definir um valor de campo, use record.set_field_value(field_api_name,new_value). Ao definir um valor de campo, verifique se o valor definido tem o mesmo tipo de dados do campo ao qual ele será definido.

    Manipulação da resposta

    APIResponse e BulkAPIResponse são objetos no pacote para respostas dos APIs do Zoho CRM. Todos os métodos que chamam API devem retornar um desses dois objetos.

    DownloadFile e downloadPhoto retorna FileAPIResponse em vez de APIResponse.

    Um método que busca uma única entidade deve retornar o objeto APIResponse, enquanto uma lista de buscas de métodos deve retornar o objeto BulkAPIResponse.

    Use a variável de instância "data" para obter os dados da entidade sozinhos pelos objetos no pacote de resposta. APIResponse.data retornará um único objeto de entidade do Zoho CRM, enquanto BulkAPIResponse.data retornará uma lista de objetos de entidade do Zoho CRM.

    Além de dados, esses objetos em pacote de resposta têm as seguintes propriedades:

    1. response_headers – contagem de API restantes para o dia/janela presente e tempo passado para a redefinição da janela presente.
    2. info – quaisquer outras informações, se fornecidas pela API, além dos dados reais.
    3. bulk_entity_response (lista de instâncias EntityResponse) – status de entidades individuais em uma API de lote. Por exemplo, nos registros de uma entrada, a API pode falhar parcialmente devido a alguns registros. Esse array fornece o status de criação de registros individuais.

    Exceções

    Todos os comportamentos inesperados, como falhas em respostas da API e anomalias do SDK, são manipulados pelo SDK Python e lançados como uma única exceção – ZCRMException. Portanto, basta capturar essa exceção sozinha no código de aplicativo do cliente.

    As classes e suas variáveis de instância

    Nome do móduloNome da classeVariáveis de instânciaMétodos
    RestClientZCRMRestClient 
    • get_instance()
    • initialize()
    • get_all_modules()
    • get_module(module_api_name)
    • get_organization_instance()
    • get_module_instance(module_api_name)
    • get_record_instance(module_api_name,entity_id)
    • get_current_user()
    • get_organization_details()
    OrgZCRMOrganization
    • org_id
    • alias
    • primary_zuid
    • zgid
    • primary_email
    • website
    • mobile
    • phone
    • employee_count
    • description
    • time_zone
    • iso_code
    • currency_locale
    • currency_symbol
    • street
    • state
    • city
    • country
    • zip_code
    • country_code
    • fax
    • mc_status
    • is_gapps_enabled
    • paid_expiry
    • trial_type
    • trial_expiry
    • is_paid_account
    • paid_type
    • get_instance(org_name=None,org_id=None)
    • get_user(self,user_id)
    • get_current_user()
    • get_all_users()
    • get_all_active_users()
    • get_all_deactive_users()
    • get_all_confirmed_users()
    • get_all_not_confirmed_users()
    • get_all_deleted_users()
    • get_all_active_confirmed_users()
    • get_all_admin_users()
    • get_all_active_confirmed_admin_users()
    • get_all_profiles()
    • get_profile(profile_id)
    • get_all_roles()
    • get_role(role_id)
    • create_user(user_instance)
    • update_user(user_instance)
    • delete_user(user_id)
    OperaçõesZCRMModule
    • api_name
    • is_convertable
    • is_creatable
    • is_editable
    • is_deletable
    • web_link
    • singular_label
    • plural_label
    • modified_by
    • modified_time
    • is_viewable
    • is_api_supported
    • is_custom_module
    • is_scoring_suppored
    • id
    • module_name
    • business_card_field_limit
    • business_card_fields
    • profiles
    • display_field_name
    • display_field_id
    • related_lists
    • layouts
    • fields
    • related_list_properties
    • properties
    • per_page
    • search_layout_fields
    • default_territory_name
    • default_territory_id
    • default_custom_view_id
    • default_custom_view
    • is_global_search_supported
    • sequence_number
    • get_instance(module_apiname)
    • get_record(entityID)
    • get_records(cvid= None,sort_by=None,sort_order=None,page=0,per_page=200)
    • create_records(record_ins_list)
    • upsert_records(record_ins_list)
    • update_records(entityid_list,field_api_name,value)
    • delete_records(entityid_list)
    • get_all_deleted_records()
    • get_recyclebin_records()
    • get_permanently_ deleted_records()
    • search_records(search_word,page=0,per_page=200)
    • get_all_fields()
    • get_field(field_id)
    • get_all_layouts()
    • get_layout(layout_ id)
    • get_all_customviews()
    • get_customview(customview_id)
    • get_all_relatedlists ()
    • get_relatedlist(relatedlist_id)
    • update_module_settings()
    • update_customview(customview_instance)
    ZCRMRecord
    • module_api_name
    • entity_id
    • line_items
    • lookup_label
    • owner
    • created_by
    • modified_by
    • created_time
    • modified_time
    • field_data
    • properties
    • participants
    • price_details
    • layout
    • tax_list
    • last_activity_time
    • get_instance(module_apiname,entity_id=None)
    • set_field_value(key,value)
    • get_field_value(key)
    • add_line_item(line_item)
    • get()
    • create()
    • update()
    • delete()
    • convert(potential_record=None,assign_to_user=None)
    • upload_attachment(file_path)
    • upload_link_as_attachment(link_url)
    • download_attachment(attachment_id)
    • delete_attachment(attachment_id)
    • upload_photo(file_path)
    • download_photo()
    • delete_photo()
    • add_relation(junction_record)
    • remove_relation(junction_record)
    • add_note(note_ins)
    • update_note(note_ins)
    • delete_note(note_ins)
    • get_notes(sort_by=None,sort_order=None,page=1,per_page=20)
    • get_attachments(page=1,per_page=20)
    • get_relatedlist_records(relatedlist_api_name,sort_by=None,sort_order=None,page=1,per_page=20)
    ZCRMInventoryLineItem
    • product
    • id
    • list_price
    • quantity
    • description
    • total
    • discount
    • discount_percentage
    • total_after_discount
    • tax_amount
    • net_total
    • delete_flag
    • line_tax
    • get_instance(zcrm_record_instance)
    ZCRMTax
    • name
    • percentage
    • value
    • get_instance(name)
    ZCRMEventParticipant
    • id
    • type
    • email
    • name
    • is_invited
    • status
    • get_instance(participant_type,participant_id)
    ZCRMPriceBookPricing
    • id
    • to_range
    • from_range
    • discount
    • get_instance(price_book_id)
    ZCRMUser
    • id
    • name
    • signature
    • country
    • role
    • customize_info
    • city
    • name_format
    • language
    • locale
    • is_personal_account
    • default_tab_group
    • street
    • alias
    • theme
    • state
    • country_locale
    • fax
    • first_name
    • email
    • zip
    • decimal_separator
    • website
    • time_format
    • profile
    • mobile
    • last_name
    • time_zone
    • zuid
    • is_confirm
    • full_name
    • phone
    • dob
    • date_format
    • status
    • get_instance(user_id=None,name=None)
    ZCRMUserCustomizeInfo
    • notes_desc
    • is_to_show_right_panel
    • is_bc_view
    • is_to_show_home
    • is_to_show_detail_view
    • unpin_recent_item
    • get_instance()
    ZCRMUserTheme
    • normal_tab_font_color
    • normal_tab_background
    • selected_tab_font_color
    • selected_tab_background
    • get_instance()
    ZCRMRole
    • name
    • id
    • reporting_to
    • label
    • is_admin
    • get_instance(role_id,role_name=None)
    ZCRMLayout
    • id
    • name
    • created_time
    • modified_time
    • is_visible
    • modified_by
    • accessible_profiles
    • created_by
    • sections
    • status
    • convert_mapping
    • get_instance(layout_id)
    ZCRMAttachment
    • id
    • parent_record
    • file_name
    • file_type
    • size
    • owner
    • created_by
    • created_time
    • modified_by
    • modified_time
    • parent_module
    • attachment_type
    • parent_name
    • parent_id
    • get_instance(parent_record,attachment_id=None)
    ZCRMCustomView
    • id
    • module_api_name
    • display_value
    • is_default
    • name
    • system_name
    • sort_by
    • category
    • fields
    • favorite
    • sort_order
    • criteria_pattern
    • criteria
    • categories
    • is_off_line
    • get_instance(custom_view_id,module_apiname=None)
    ZCRMCustomViewCategory
    • display_value
    • actual_value
    • get_instance()
    ZCRMCustomViewCriteria
    • comparator
    • field
    • value
    • get_instance()
    ZCRMField
    • api_name
    • is_custom_field
    • lookup_field
    • convert_mapping
    • is_visible
    • field_label
    • length
    • created_source
    • default_value
    • is_mandatory
    • sequence_number
    • is_read_only
    • is_unique_field
    • is_case_sensitive
    • data_type
    • is_formula_field
    • is_currency_field
    • id
    • picklist_values
    • is_auto_number
    • is_business_card_supported
    • field_layout_permissions
    • decimal_place
    • precision
    • rounding_option
    • formula_return_type
    • formula_expression
    • prefix
    • suffix
    • start_number
    • json_type
    • get_instance(api_name)
    ZCRMJunctionRecord
    • id
    • api_name
    • related_data=dict()
    • get_instance(api_name,record_id)
    • set_related_data(key,value)
    • get_related_data()
    ZCRMLeadConvertMapping
    • id
    • name
    • fields
    • get_instance(name ,converted_id)
    ZCRMLeadConvertMappingField
    • id
    • api_name
    • field_label
    • is_required
    • get_instance(api_name,field_id)
    ZCRMLookupField
    • api_name
    • display_label
    • module
    • id
    • get_instance(api_name)
    ZCRMModuleRelatedList
    • api_name
    • module
    • display_label
    • is_visible
    • name
    • id
    • href
    • type
    • get_instance(api_name)
    ZCRMModuleRelation
    • parent_record
    • parent_module_api_name
    • junction_record
    • api_name
    • label
    • id
    • is_visible
    • get_instance(parentmodule_apiname_or_parentrecord,related_list_apiname_or_junction_record)
    • get_records(sort_by_field=None,sort_order=None,page=1,per_page=20)
    • upload_attachment(file_path)
    • upload_link_as_attachment(link_url)
    • download_attachment(attachment_id)
    • delete_attachment(attachment_id)
    • add_relation()
    • remove_relation()
    • add_note(zcrm_note_ins)
    • update_note(zcrm_note_ins)
    • delete_note(zcrm_note_ins)
    • get_notes(sort_by,sort_order,page,per_page)
    • get_attachments(page,per_page)
    ZCRMNote
    • id
    • parent_record
    • title
    • content
    • owner
    • created_by
    • created_time
    • modified_by
    • modified_time
    • attachments
    • size
    • is_voice_note
    • parent_module
    • parent_name
    • parent_id
    • get_instance(parent_record,note_id=None)
    ZCRMPermission
    • id
    • name
    • display_label
    • module
    • is_enabled
    • get_instance(permission_name,permission_id)
    ZCRMPickListValue
    • display_value
    • sequence_number
    • actual_value
    • maps
    • get_instance()
    ZCRMProfile
    • name
    • id
    • is_default
    • created_time
    • modified_time
    • modified_by
    • description
    • created_by
    • category
    • permissions
    • sections
    • get_instance(profile_id,profile_name=None)
    ZCRMProfileCategory
    • name
    • module
    • display_label
    • permission_ids
    • get_instance(profile_category_name)
    ZCRMProfileSection
    • name
    • categories
    • get_instance(section_name)
    ZCRMRelatedListProperties
    • sort_by
    • sort_order
    • fields
    • get_instance()
    ZCRMSection
    • name
    • display_name
    • column_count
    • sequence_number
    • fields
    • get_instance(section_name)
    ZCRMTrashRecord
    • id
    • type
    • display_name
    • deleted_time
    • created_by
    • deleted_by
    • get_instance(entity_type,entity_id=None)
    RespostaAPIResponse
    • response_json
    • response_headers
    • status_code
    • data
    • status
    • code
    • message
    • details
     
    BulkApiRepsponse
    • response_json
    • response_headers
    • status_code
    • data
    • info(ResponseInfo instance)
    • bulk_entity_response(EntityResponse instances as list)
    • status
    • code
    • message
    • details
     
    EntityRepsponse
    • data
    • status
    • code
    • message
    • details
    • upsert_action
    • upsert_duplicate_field
     
    RepsponseInfo
    • is_more_records
    • page
    • per_page
    • count
     
    FileApiRepsponse
    • response
    • status_code
    • file_name
    • response_headers
    • status
    • code
    • message
    • details
     
    CLExceptionZCRMException
    • url
    • status_code
    • error_content
    • error_message
    • error_code
    • error_details
     

    Share this post : FacebookTwitter

    Ainda não consegue encontrar o que você está procurando?

    Escreva para nós: support@zohocrm.com