Skip to content

Commit

Permalink
Merge branch 'develop' into NR-356329-browser-logs
Browse files Browse the repository at this point in the history
  • Loading branch information
adutta-newrelic committed Feb 17, 2025
2 parents 4bd682f + bd81ff8 commit 263e0f7
Show file tree
Hide file tree
Showing 62 changed files with 2,144 additions and 1,698 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,8 @@ When you sign up for New Relic, this creates an organization containing a single

An account can have many sources of data reporting to it. For example, a single account could have data reporting from our infrastructure agent, an <InlinePopover type="apm"/> agent, and other integrations. All data reported to New Relic requires an [account ID](/docs/accounts/accounts-billing/account-structure/account-id), which tells New Relic which account that data belongs in. That ID is also used for some account-specific tasks, like making API calls.

You may notice a special account in your list of accounts under the <strong>Organization</strong> header. This account stores data for organization-scoped features, and you will use this account for any queries using data from organization-scoped features. You cannot cancel or ingest data into this account. This will also be in your list of accounts when querying NerdGraph. It will be returned as `<organization ID> Storage Account`.

When you [set up user access](#account-access), you grant users access to specific accounts.

## Cross-account access [#cross-account-access]
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ In addition to the primary billing factors of GB Ingested and billable users, yo

<Callout variant="tip">
Your use of CodeStream under Advanced Compute will incur CCU charges, regardless of user type. This means that free basic users can access Advanced Compute features and incur charges for Advanced CCUs.
</Callout>
</Callout>
* **EU Data Center for Original Data or Data Plus**: This add-on applies to your data option (original Data or Data Plus) when you select the European Union as your data region, as available.
* **Extended Retention for Original Data or Data Plus**: This add-on applies if you exceed the default length of time your data is retained. This applies to all your data—not just logs—and is a good option if you need to make a lot of small queries or make queries on large volumes of data.
* **Live Archives**: Extend your log storage duration up to seven years. Live Archives also requires Advanced Compute.
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -217,7 +217,7 @@ To learn how to add users, assign them to groups, and create custom groups and r

## Use the API [#api]

For how to manage your users and groups via API, see [our NerdGraph docs](/docs/apis/nerdgraph/examples/nerdgraph-manage-users).
For how to manage your users, groups, and roles via API, see [our NerdGraph docs](/docs/apis/nerdgraph/examples/nerdgraph-manage-users).

## User management terms and definitions [#definitions]

Expand Down
123 changes: 123 additions & 0 deletions src/content/docs/apis/nerdgraph/examples/nerdgraph-manage-groups.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -274,6 +274,129 @@ Here's an example response:
},
```

## Create a role [#create-role]

Here's an example of creating a [role](/docs/accounts/accounts-billing/new-relic-one-user-management/user-management-concepts/#roles):

```graphql
mutation {
customRoleCreate(
container: {
id: "$YOUR_ORGANIZATION_ID"
type: "ORGANIZATION"
}
name: "MY CUSTOM ROLE"
permissionIds: [1,2,3]
scope: "ACCOUNT"
) {
id
}
}
```
### Parameters
- `container`:
- `id`: (String) The unique identifier of your organization. Replace $YOUR_ORGANIZATION_ID with your actual organization ID.
- `type`: (String) The type of container. Currently, the only supported type is "ORGANIZATION".
- `name`: (String) The name assigned to the custom role. Example: "MY CUSTOM ROLE".
- `permissionIds`: (Array) A list of permission IDs representing the capabilities assigned to the custom role. Ensure these IDs correspond to valid permissions in your system.
- `scope`: (String) The level at which the role's permissions apply. In this instance, the scope is "ACCOUNT".

### Response
- `id`: Returns the unique ID of the newly created custom role.

<Callout variant="important">
- Replace `$YOUR_ORGANIZATION_ID` with your specific organization ID before executing the mutation.
- Ensure that the `permissionIds` provided are valid and align with the permissions you want to grant.
</Callout>

Before you create a custom role, you have to identify the permissions you want to assign to it.

Use the following query to retrieve the list of permissions:

```graphql
mutation {
customerAdministration {
permissions {
items {
category
feature
id
product
subsetIds
}
nextCursor
}
}
}
```
This returns account-scoped permissions. For permissions scoped to an org, run the following query instead:

```graphql
{
customerAdministration {
permissions(filter: {scope: {eq: "organization"}}) {
items {
category
feature
id
product
subsetIds
}
nextCursor
}
}
}
```

Note the following fields:
- `items`: An array of permission objects, each containing the following attributes:
- `category`: (String) The category or grouping the permission belongs to.
- `feature`: (String) The specific feature the permission is associated with.
- `id`: (String) A unique identifier for each permission.
- `product`: (String) The product that the permission applies to.
- `subsetIds`: (Array) A list of IDs representing subsets or related permissions.

After you have the unique identifier for each permission you want to assign to the new role, create that role.

## Update role [#update-role]

Here's an example of updating a [role](/docs/accounts/accounts-billing/new-relic-one-user-management/user-management-concepts/#roles).

```graphql
mutation {
customRoleUpdate(
id: $ROLE_ID
name: "MY NEW CUSTOM ROLE NAME"
permissionIds: [4,5,6]
) {
id
}
}
```

### Parameters
- `id`: The unique identifier of the custom role you wish to modify. Replace `$ROLE_ID` with the actual ID of the role.
- `name`: The new name you want to assign to the custom role. In this example, it's `MY NEW CUSTOM ROLE NAME`.
- `permissionIds`: An array of permission IDs you want to assign to this role. Ensure these IDs are valid and correspond to the permissions you intend to implement.

## Delete a role [#delete-role]
Here's an example of deleting a [role](/docs/accounts/accounts-billing/new-relic-one-user-management/user-management-concepts/#roles):

```graphql
mutation {
customRoleDelete(
id: $ROLE_ID
) {
id
}
}
```

### Parameters
- `id`: The unique identifier of the role you wish to delete. Replace `$ROLE_ID` with the actual ID of the role you want to remove.
### Response
- `id`: Returns the ID of the role that has been deleted, confirming the successful execution of the mutation.

## Create a group [#create-group]

Here's an example of creating a [group](/docs/accounts/accounts-billing/new-relic-one-user-management/user-management-concepts/#groups):
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -30,26 +30,25 @@ Notes about this functionality:

* All mutations can accept multiple keys as arguments, and will return details about successful changes and errors. See examples below for details.
* All mutations (create, update and delete) will result in an `NrAuditEvent` that can be queried for auditing purposes. For details, see [Audit events](/docs/insights/use-insights-ui/manage-account-data/query-account-audit-logs-nrauditevent).
* Regarding license keys:
* License keys are categorized by NerdGraph as <DNT>**ingest keys**</DNT>. This is because their main use is to allow data ingest.
* You can create up to 1,000 keys of each license key type, which allows for key rotation.
* You can't manage or delete original license keys; you can only create additional license keys and manage keys you've created.
* Regarding ingest keys:
* License and Browser keys are categorized by NerdGraph as <DNT>**ingest keys**</DNT>. This is because their main use is to allow data ingest.
* You can create up to 1,000 keys of each ingest key type, which allows for key rotation.
* You can't manage or delete original account ingest keys but you can contact New Relic support to rotate these; you can only create additional ingest or user keys and manage keys you've created.

## Before using examples [#before-examples]

Things to note before using these example queries:

* The examples below use license keys (aka ingest keys), but you can query [user keys](/docs/apis/get-started/intro-apis/types-new-relic-api-keys#user-api-key) in similar ways, replacing the ingest-key-specific fields with user-key-specific fields.
* To understand the data structure, we recommend experimenting with queries using the [GraphiQL explorer](https://api.newrelic.com/graphiql).
* You can also [create, view, and delete user keys using the UI.](/docs/apis/get-started/intro-apis/types-new-relic-api-keys#personal-api-key)

## Create keys

<Callout variant="tip">
You can find and generate user keys using the [NerdGraph GraphiQL explorer](/docs/apis/nerdgraph/get-started/introduction-new-relic-nerdgraph/#explorer), at the top of that interface.
You can find and generate user keys using the [NerdGraph GraphQL explorer](/docs/apis/nerdgraph/get-started/introduction-new-relic-nerdgraph/#explorer), at the top of that interface.
</Callout>

To create multiple keys (user key or license key) in a single mutation, for multiple accounts and key types. Note that the mutation can return successfully created keys as well as any errors encountered trying to create keys.
To create multiple keys (user key or ingest key) in a single mutation, for multiple accounts and key types. Note that the mutation can return successfully created keys as well as any errors encountered trying to create keys.

Example of creating a key:

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -616,6 +616,32 @@ Want to try out our .NET agent? [Create a New Relic account](https://newrelic.co
</td>
</tr>

<tr>
<td>
System.Data.ODBC
</td>

<td className="fcenter">
<Icon
style={{color: '#328787'}}
name="fe-check"
/>
</td>

<td>
Use [System.Data.Odbc](https://www.nuget.org/packages/System.Data.Odbc/).
* Minimum supported version: 8.0.0
* Latest verified compatible version: 9.0.1
* Minimum agent version required: 10.35.0


The following features supported for ODBC datastore calls in .NET Framework (using the built-in System.Data namespace) are not supported for .NET 8+:
* Connection `Open/OpenAsync` calls
* SqlDataReader `Read/NextResult` calls
* Slow SQL traces
</td>
</tr>

</tbody>
</table>

Expand Down Expand Up @@ -1388,6 +1414,23 @@ Want to try out our .NET agent? [Create a New Relic account](https://newrelic.co
</td>
</tr>

<tr>
<td>
System.Data.ODBC
</td>

<td className="fcenter">
<Icon
style={{color: '#328787'}}
name="fe-check"
/>
</td>
Use the built-in `System.Data.ODBC` namespace from the .NET Framework.
* Available in all currently supported .NET Framework agent versions.
* All versions of the .NET Framework currently supported by Microsoft are verified to be compatible.
<td/>
</tr>

<tr>
<td>
MongoDB (legacy driver)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -276,19 +276,19 @@ version.
| --- | --- | --- | --- |
| `@apollo/gateway` | 2.3.0 | 2.9.3 | `@newrelic/apollo-server-plugin@1.0.0` |
| `@apollo/server` | 4.0.0 | 4.11.3 | `@newrelic/apollo-server-plugin@2.1.0` |
| `@aws-sdk/client-bedrock-runtime` | 3.474.0 | 3.741.0 | 11.13.0 |
| `@aws-sdk/client-dynamodb` | 3.0.0 | 3.741.0 | 8.7.1 |
| `@aws-sdk/client-sns` | 3.0.0 | 3.741.0 | 8.7.1 |
| `@aws-sdk/client-sqs` | 3.0.0 | 3.741.0 | 8.7.1 |
| `@aws-sdk/lib-dynamodb` | 3.377.0 | 3.741.0 | 8.7.1 |
| `@aws-sdk/client-bedrock-runtime` | 3.474.0 | 3.744.0 | 11.13.0 |
| `@aws-sdk/client-dynamodb` | 3.0.0 | 3.744.0 | 8.7.1 |
| `@aws-sdk/client-sns` | 3.0.0 | 3.744.0 | 8.7.1 |
| `@aws-sdk/client-sqs` | 3.0.0 | 3.744.0 | 8.7.1 |
| `@aws-sdk/lib-dynamodb` | 3.377.0 | 3.744.0 | 8.7.1 |
| `@aws-sdk/smithy-client` | 3.47.0 | 3.374.0 | 8.7.1 |
| `@elastic/elasticsearch` | 7.16.0 | 8.17.0 | 11.9.0 |
| `@grpc/grpc-js` | 1.4.0 | 1.12.6 | 8.17.0 |
| `@hapi/hapi` | 20.1.2 | 21.3.12 | 9.0.0 |
| `@koa/router` | 11.0.2 | 13.1.0 | 3.2.0 |
| `@langchain/core` | 0.1.17 | 0.3.37 | 11.13.0 |
| `@langchain/core` | 0.1.17 | 0.3.40 | 11.13.0 |
| `@nestjs/cli` | 9.0.0 | 11.0.2 | 10.1.0 |
| `@opensearch-project/opensearch` | 2.1.0 | 3.2.0 | 12.10.0 |
| `@opensearch-project/opensearch` | 2.1.0 | 3.3.0 | 12.10.0 |
| `@prisma/client` | 5.0.0 | 6.3.1 | 11.0.0 |
| `@smithy/smithy-client` | 2.0.0 | 4.1.3 | 11.0.0 |
| `amqplib` | 0.5.0 | 0.10.5 | 2.0.0 |
Expand All @@ -302,19 +302,19 @@ version.
| `express` | 4.6.0 | 4.21.2 | 2.6.0 |
| `fastify` | 2.0.0 | 5.2.1 | 8.5.0 |
| `generic-pool` | 3.0.0 | 3.9.0 | 0.9.0 |
| `ioredis` | 4.0.0 | 5.4.2 | 1.26.2 |
| `ioredis` | 4.0.0 | 5.5.0 | 1.26.2 |
| `kafkajs` | 2.0.0 | 2.2.4 | 11.19.0 |
| `koa` | 2.0.0 | 2.15.3 | 3.2.0 |
| `koa` | 2.0.0 | 2.15.4 | 3.2.0 |
| `koa-route` | 3.0.0 | 4.0.1 | 3.2.0 |
| `koa-router` | 11.0.2 | 13.0.1 | 3.2.0 |
| `memcached` | 2.2.0 | 2.2.2 | 1.26.2 |
| `mongodb` | 4.1.4 | 6.13.0 | 1.32.0 |
| `mysql` | 2.2.0 | 2.18.1 | 1.32.0 |
| `mysql2` | 2.0.0 | 3.12.0 | 1.32.0 |
| `next` | 13.4.19 | 15.1.6 | 12.0.0 |
| `openai` | 4.0.0 | 4.82.0 | 11.13.0 |
| `pg` | 8.2.0 | 8.13.1 | 9.0.0 |
| `pg-native` | 3.0.0 | 3.2.0 | 9.0.0 |
| `next` | 13.4.19 | 15.1.7 | 12.0.0 |
| `openai` | 4.0.0 | 4.84.0 | 11.13.0 |
| `pg` | 8.2.0 | 8.13.2 | 9.0.0 |
| `pg-native` | 3.0.0 | 3.2.1 | 9.0.0 |
| `pino` | 7.0.0 | 9.6.0 | 8.11.0 |
| `q` | 1.3.0 | 1.5.1 | 1.26.2 |
| `redis` | 3.1.0 | 4.7.0 | 1.31.0 |
Expand Down
Loading

0 comments on commit 263e0f7

Please sign in to comment.