'Gets information about a Service Fabric application.
Returns the information about the application that was created or in
the process of being created in the Service Fabric cluster and whose
name matches the one specified as the parameter. The response
includes the name, type, status, parameters and other details about
the application.
:param application_id: The identity of the application. This is
typically the full name of the application without the \'fabric:\' URI
scheme.
:type application_id: str
:param exclude_application_parameters: The flag that specifies
whether application parameters will be excluded from the result.
:type exclude_application_parameters: bool
:param timeout: The server timeout for performing the operation in
seconds. This specifies the time duration that the client is willing
to wait for the requested operation to complete. The default value
for this parameter is 60 seconds.
:type timeout: long
:param dict custom_headers: headers that will be added to the request
:param bool raw: returns the direct response alongside the
deserialized response
:param operation_config: :ref:`Operation configuration
overrides<msrest:optionsforoperations>`.
:rtype: :class:`ApplicationInfo
<azure.servicefabric.models.ApplicationInfo>`
:rtype: :class:`ClientRawResponse<msrest.pipeline.ClientRawResponse>`
if raw=true
:raises:
:class:`FabricErrorException<azure.servicefabric.models.FabricErrorException>`'

def get_application_info(self, application_id, exclude_application_parameters=False, timeout=60, custom_headers=None, raw=False, **operation_config):

    api_version = '3.0'
    url = '/Applications/{applicationId}'
    path_format_arguments = {'applicationId': self._serialize.url('application_id', application_id, 'str', skip_quote=True)}
    url = self._client.format_url(url, **path_format_arguments)
    query_parameters = {}
    query_parameters['api-version'] = self._serialize.query('api_version', api_version, 'str')
    if (exclude_application_parameters is not None):
        query_parameters['ExcludeApplicationParameters'] = self._serialize.query('exclude_application_parameters', exclude_application_parameters, 'bool')
    if (timeout is not None):
        query_parameters['timeout'] = self._serialize.query('timeout', timeout, 'long', maximum=4294967295, minimum=1)
    header_parameters = {}
    header_parameters['Content-Type'] = 'application/json;    charset=utf-8'
    if custom_headers:
        header_parameters.update(custom_headers)
    request = self._client.get(url, query_parameters)
    response = self._client.send(request, header_parameters, **operation_config)
    if (response.status_code not in [200, 204]):
        raise models.FabricErrorException(self._deserialize, response)
    deserialized = None
    if (response.status_code == 200):
        deserialized = self._deserialize('ApplicationInfo', response)
    if raw:
        client_raw_response = ClientRawResponse(deserialized, response)
        return client_raw_response
    return deserialized
