import Tabs from '@theme/Tabs'
import TabItem from '@theme/TabItem'


Every issue identified and reported by the Glasswall engine has a unique issue ID associated. This API provides a description for a given Issue ID number.

<Tabs>

<TabItem value="C++" label="C++" default>

**Synopsis**

For session **session** , **GW2GetIdInfo** places in the object pointed to by **outputBuffer** , a pointer to a
description of Glasswall Issue ID **issueId**. The length of the description, in bytes, is placed in the
**size_t** object pointed to by **bufferLength**.

```cpp

#include "glasswall.core2.api.h"

int GW2GetIdInfo(
    Session session,
    size_t issueId,
    size_t *bufferLength,
    char **outputBuffer);

```

**Returns**

Returns an integer `GW2_RetStatus` enum value. Negative numbers indicate a failure. If successful, the output buffer is populated with the Issue Description.

**Example**

```cpp

#include "glasswall.core2.api.h"

char *outbuf = NULL;
size_t buflen = 0;

if (GW2OpenSession() < 0)
    /* error opening session */
else
{
    int status = GW2GetIdInfo(session, issueId, &buflen, &outbuf);

    /* outbuf points to a buffer containing the XML file.
     * Either process the data pointed to, or copy the data and process it
     * after GW2CloseSession is called
     */

    if (GW2CloseSession() < 0)
        /* error closing session */
}

```

</TabItem>

<TabItem value="C#" label="C#">

**Synopsis**

```csharp
public int GetIdInfo(
    int session,
    uint IssueID,
    ref UIntPtr bufferLength,
    out IntPtr outputBuffer)
```

**Returns**

Returns an integer `GW2_RetStatus` enum value. Negative numbers indicate a failure. If successful, the output buffer is
populated with the Issue Description.

**Example**
```csharp
using glasswall_core2;

...

Glasswall glasswall = new Glasswall(); // Instance of the Glasswall wrapper

int session      = glasswall.OpenSession();
int returnStatus = glasswall.GetIdInfo(session, 96, ref bufferLength, out buffer);

if (bufferLength >= 0)
{
    byte[] msgArray = glasswall.CreateArrayFromBuffer(buffer, bufferLength);
    // Error description for issue ID 96 now stored in a byte array
}

if (glasswall.CloseSession(session))
{
    // Error Handling
}

```

</TabItem>

<TabItem value="Java" label="Java">

**Synopsis**

```java
import com.glasswall.core2javabridge.*;

public String GW2GetIdInfoString(int session, int issueId) throws GlasswallException
```

**Description**

This functionality previously required two separate function calls to retrieve the ID data. This has now been streamlined to return the settings as a `String`. The two original functions have been deprecated.

**Returns**

The **GW2GetIdInfoString** function returns a `String` containing a description of the given `issueId`

A **GlasswallException** exception will be thrown if `session` is invalid, or if the `issueId` description could not be retrieved.

**Synopsis - Deprecated Functions**

```java
import com.glasswall.core2javabridge.*;

(Deprecated)
public int GW2GetIdInfo(int session, int issueId) throws GlasswallException
public byte[] GetIDBuffer(int session) throws GlasswallException
```

**Description - Deprecated Functions**

The **GW2GetIdInfo** function outputs the description of a given `issueId` for a given `session` to the internal ID Buffer. Retrieve this data through use of **GetIDBuffer** function. 

**Returns - Deprecated Functions**

The **GW2GetIdInfo** function returns a **GW2_RetStatus** enumeration converted to `int`. The value will be negative if an error occurred. `0` indicates success. Refer to the API Overview/Return types for details. 

**GetIDBuffer** returns a `byte[]` containing the ID description. This will be null if **GetIDBuffer** has not been called.

A **GlasswallException** exception will be thrown if ```session``` is invalid, or if the issue description could not be retrieved.

</TabItem>

<TabItem value="Python" label="Python">

**Synopsis**

Retrieves the group description for the given Issue ID.

```py
def get_id_info(self, issue_id: int, raise_unsupported: bool = True):
    """ Retrieves the group description for the given Issue ID. e.g. issue_id 96 returns "Document Processing Instances"

    Args:
        issue_id (int): The issue id.
        raise_unsupported (bool, optional): Default True. Raise exceptions when Glasswall encounters an error. Fail silently if False.

    Returns:
        id_info (str): The group description for the given Issue ID.
    """
```

**Returns**

A string, the group description for the given Issue ID.

</TabItem>

<TabItem value="JavaScript" label="JavaScript">

**Synopsis**

This function places a pointer to a description of a specified IssueID in a specified location.

```jsx
/**
*
* @param {number} session The ID of the session.
* @param {number} issueId The ID of the issue.
* @param {number} bufferLength The length of the buffer.
* @param {string} outputBuffer The location of the output buffer.
*/

GW2GetIdInfo(
    session,
    issueId,
    bufferLength,
    outputBuffer)
```

**Returns**

Returns an integer `GW2_RetStatus` enum value. Negative numbers indicate a failure. If successful, the output buffer is populated with the Issue Description.

**Example**
```jsx

const ref = require('ref-napi');

...

function buffer_to_string(buffer, buffer_size) {

    if (!buffer.isNull() && ref.deref(buffer_size) > 0) {
        return Buffer.from(ref.reinterpret(ref.deref(buffer), ref.deref(buffer_size), 0)).toString();
    }
    else {
        return "";
    }
}

...

output_file_buffer = ref.alloc(ref.refType(ref.types.CString));
output_buffer_size = ref.alloc(ref.types.size_t, 0);
return_status      = gw.GW2GetIdInfo(session_id, 96, output_buffer_size, output_file_buffer);

let error_description = buffer_to_string(output_file_buffer, output_buffer_size);

...

```

</TabItem>

</Tabs>