# Organizations

## List Organizations

`OrganizationListPage organizations().list(OrganizationListParamsparams = OrganizationListParams.none(), RequestOptionsrequestOptions = RequestOptions.none())`

**get** `/api/v2/organizations`

List organizations the current user can access.

### Parameters

- `OrganizationListParams params`

  - `Optional<String> name`

  - `Optional<Long> pageSize`

  - `Optional<String> pageToken`

### Returns

- `class Organization:`

  API response schema for an organization.

  - `String id`

    The organization's unique identifier.

  - `String name`

    The organization's display name.

  - `Optional<LocalDateTime> createdAt`

    Creation datetime

  - `Optional<Metadata> metadata`

    Additional organization metadata.

  - `Optional<LocalDateTime> updatedAt`

    Update datetime

### Example

```java
package ai.llamaindex.llamacloudadmin.example;

import ai.llamaindex.llamacloudadmin.client.LlamaCloudAdminClient;
import ai.llamaindex.llamacloudadmin.client.okhttp.LlamaCloudAdminOkHttpClient;
import ai.llamaindex.llamacloudadmin.models.organizations.OrganizationListPage;
import ai.llamaindex.llamacloudadmin.models.organizations.OrganizationListParams;

public final class Main {
    private Main() {}

    public static void main(String[] args) {
        LlamaCloudAdminClient client = LlamaCloudAdminOkHttpClient.fromEnv();

        OrganizationListPage page = client.organizations().list();
    }
}
```

#### Response

```json
{
  "items": [
    {
      "id": "id",
      "name": "name",
      "created_at": "2019-12-27T18:11:19.117Z",
      "metadata": {
        "foo": "bar"
      },
      "updated_at": "2019-12-27T18:11:19.117Z"
    }
  ],
  "next_page_token": "next_page_token",
  "total_size": 0
}
```

## Create Organization

`Organization organizations().create(OrganizationCreateParamsparams, RequestOptionsrequestOptions = RequestOptions.none())`

**post** `/api/v2/organizations`

Create a new organization.

### Parameters

- `OrganizationCreateParams params`

  - `String name`

    The organization's display name.

### Returns

- `class Organization:`

  API response schema for an organization.

  - `String id`

    The organization's unique identifier.

  - `String name`

    The organization's display name.

  - `Optional<LocalDateTime> createdAt`

    Creation datetime

  - `Optional<Metadata> metadata`

    Additional organization metadata.

  - `Optional<LocalDateTime> updatedAt`

    Update datetime

### Example

```java
package ai.llamaindex.llamacloudadmin.example;

import ai.llamaindex.llamacloudadmin.client.LlamaCloudAdminClient;
import ai.llamaindex.llamacloudadmin.client.okhttp.LlamaCloudAdminOkHttpClient;
import ai.llamaindex.llamacloudadmin.models.organizations.Organization;
import ai.llamaindex.llamacloudadmin.models.organizations.OrganizationCreateParams;

public final class Main {
    private Main() {}

    public static void main(String[] args) {
        LlamaCloudAdminClient client = LlamaCloudAdminOkHttpClient.fromEnv();

        OrganizationCreateParams params = OrganizationCreateParams.builder()
            .name("x")
            .build();
        Organization organization = client.organizations().create(params);
    }
}
```

#### Response

```json
{
  "id": "id",
  "name": "name",
  "created_at": "2019-12-27T18:11:19.117Z",
  "metadata": {
    "foo": "bar"
  },
  "updated_at": "2019-12-27T18:11:19.117Z"
}
```

## Get Organization

`Organization organizations().get(OrganizationGetParamsparams = OrganizationGetParams.none(), RequestOptionsrequestOptions = RequestOptions.none())`

**get** `/api/v2/organizations/{organization_id}`

Get an organization by ID.

### Parameters

- `OrganizationGetParams params`

  - `Optional<String> organizationId`

### Returns

- `class Organization:`

  API response schema for an organization.

  - `String id`

    The organization's unique identifier.

  - `String name`

    The organization's display name.

  - `Optional<LocalDateTime> createdAt`

    Creation datetime

  - `Optional<Metadata> metadata`

    Additional organization metadata.

  - `Optional<LocalDateTime> updatedAt`

    Update datetime

### Example

```java
package ai.llamaindex.llamacloudadmin.example;

import ai.llamaindex.llamacloudadmin.client.LlamaCloudAdminClient;
import ai.llamaindex.llamacloudadmin.client.okhttp.LlamaCloudAdminOkHttpClient;
import ai.llamaindex.llamacloudadmin.models.organizations.Organization;
import ai.llamaindex.llamacloudadmin.models.organizations.OrganizationGetParams;

public final class Main {
    private Main() {}

    public static void main(String[] args) {
        LlamaCloudAdminClient client = LlamaCloudAdminOkHttpClient.fromEnv();

        Organization organization = client.organizations().get("182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e");
    }
}
```

#### Response

```json
{
  "id": "id",
  "name": "name",
  "created_at": "2019-12-27T18:11:19.117Z",
  "metadata": {
    "foo": "bar"
  },
  "updated_at": "2019-12-27T18:11:19.117Z"
}
```

## Update Organization

`Organization organizations().update(OrganizationUpdateParamsparams, RequestOptionsrequestOptions = RequestOptions.none())`

**put** `/api/v2/organizations/{organization_id}`

Update an existing organization.

### Parameters

- `OrganizationUpdateParams params`

  - `Optional<String> organizationId`

  - `String name`

    The organization's new display name.

### Returns

- `class Organization:`

  API response schema for an organization.

  - `String id`

    The organization's unique identifier.

  - `String name`

    The organization's display name.

  - `Optional<LocalDateTime> createdAt`

    Creation datetime

  - `Optional<Metadata> metadata`

    Additional organization metadata.

  - `Optional<LocalDateTime> updatedAt`

    Update datetime

### Example

```java
package ai.llamaindex.llamacloudadmin.example;

import ai.llamaindex.llamacloudadmin.client.LlamaCloudAdminClient;
import ai.llamaindex.llamacloudadmin.client.okhttp.LlamaCloudAdminOkHttpClient;
import ai.llamaindex.llamacloudadmin.models.organizations.Organization;
import ai.llamaindex.llamacloudadmin.models.organizations.OrganizationUpdateParams;

public final class Main {
    private Main() {}

    public static void main(String[] args) {
        LlamaCloudAdminClient client = LlamaCloudAdminOkHttpClient.fromEnv();

        OrganizationUpdateParams params = OrganizationUpdateParams.builder()
            .organizationId("182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e")
            .name("x")
            .build();
        Organization organization = client.organizations().update(params);
    }
}
```

#### Response

```json
{
  "id": "id",
  "name": "name",
  "created_at": "2019-12-27T18:11:19.117Z",
  "metadata": {
    "foo": "bar"
  },
  "updated_at": "2019-12-27T18:11:19.117Z"
}
```

## Delete Organization

`organizations().delete(OrganizationDeleteParamsparams = OrganizationDeleteParams.none(), RequestOptionsrequestOptions = RequestOptions.none())`

**delete** `/api/v2/organizations/{organization_id}`

Delete an organization by ID.

### Parameters

- `OrganizationDeleteParams params`

  - `Optional<String> organizationId`

### Example

```java
package ai.llamaindex.llamacloudadmin.example;

import ai.llamaindex.llamacloudadmin.client.LlamaCloudAdminClient;
import ai.llamaindex.llamacloudadmin.client.okhttp.LlamaCloudAdminOkHttpClient;
import ai.llamaindex.llamacloudadmin.models.organizations.OrganizationDeleteParams;

public final class Main {
    private Main() {}

    public static void main(String[] args) {
        LlamaCloudAdminClient client = LlamaCloudAdminOkHttpClient.fromEnv();

        client.organizations().delete("182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e");
    }
}
```

## Get Organization Usage

`UsageAndPlan organizations().getUsage(OrganizationGetUsageParamsparams = OrganizationGetUsageParams.none(), RequestOptionsrequestOptions = RequestOptions.none())`

**get** `/api/v1/organizations/{organization_id}/usage`

Get usage for a specific organization.

### Parameters

- `OrganizationGetUsageParams params`

  - `Optional<String> organizationId`

  - `Optional<Boolean> getCurrentInvoiceTotal`

### Returns

- `class UsageAndPlan:`

  - `Plan plan`

    - `Limits limits`

      - `boolean allowPayAsYouGo`

        Whether usage is allowed after credit grants are exhausted

      - `Optional<Long> maxConcurrentIndexJobs`

      - `Optional<Long> maxConcurrentParseJobsOther`

      - `Optional<Long> maxConcurrentParseJobsPremium`

      - `Optional<Long> maxDataSinks`

      - `Optional<Long> maxDataSources`

      - `Optional<Long> maxEmbeddingModels`

      - `Optional<Long> maxExtractionAgents`

      - `Optional<Long> maxExtractionJobs`

      - `Optional<Long> maxExtractionRuns`

      - `Optional<Long> maxFilesPerIndex`

      - `Optional<Long> maxIndexes`

      - `Optional<Long> maxMonthlyInvoiceTotalUsd`

      - `Optional<Long> maxOrganizations`

      - `Optional<Long> maxPagesPerIndex`

      - `Optional<Long> maxProjects`

      - `Optional<Long> maxPublishedAgents`

      - `Optional<Long> maxReportAgentSessions`

      - `Optional<Long> maxUsers`

      - `boolean mfaEnabled`

      - `boolean ssoEnabled`

      - `long subscriptionCostUsd`

      - `Optional<Long> maxDirectories`

      - `Optional<Long> maxDirectoryFilesPerDirectory`

      - `Optional<Long> maxDirectoryIngestFiles`

      - `Optional<Long> maxDirectorySyncPlanActions`

      - `Optional<List<Long>> spendingSoftAlertsUsdCents`

        The amount of USD cents at which a soft alert should be triggered

    - `Name name`

      - `ENTERPRISE("enterprise")`

      - `ENTERPRISE_CONTRACT("enterprise_contract")`

      - `ENTERPRISE_POC("enterprise_poc")`

      - `FREE("free")`

      - `FREE_CONTRACT("free_contract")`

      - `FREE_V1("free_v1")`

      - `FREE_V2("free_v2")`

      - `LLAMA_PARSE("llama_parse")`

      - `PRO("pro")`

      - `PRO_V1("pro_v1")`

      - `PRO_V2("pro_v2")`

      - `STARTER_V1("starter_v1")`

      - `STARTER_V2("starter_v2")`

      - `UNKNOWN("unknown")`

      - `YC_DEAL_V1("yc_deal_v1")`

    - `PlanFrequency planFrequency`

      - `ANNUAL("ANNUAL")`

      - `MONTHLY("MONTHLY")`

      - `QUARTERLY("QUARTERLY")`

    - `Optional<String> id`

      The ID of the plan in Metronome

    - `Optional<CurrentBillingPeriod> currentBillingPeriod`

      The current billing period

      - `LocalDateTime endDate`

      - `LocalDateTime startDate`

    - `Optional<LocalDateTime> endingBefore`

      The date the plan ends on

    - `Optional<Long> failureCount`

      The number of payment failures for this organization

    - `Optional<Boolean> isPaymentFailed`

      Whether the organization has a failed payment that requires support contact

    - `Optional<List<RecurringCredit>> recurringCredits`

      - `long creditAmount`

      - `CreditType creditType`

        - `String id`

        - `String name`

      - `String name`

      - `double priority`

      - `String productId`

        The ID of the product in Metronome used to represent the credit grant

      - `double rolloverFraction`

        The fraction of the credit that will roll over to the next period, between 0 and 1

      - `Optional<Double> periodsDuration`

        How many billing periods the credit grant will last for

    - `Optional<LocalDateTime> startingOn`

      The date the plan starts on

  - `Usage usage`

    Account usage totals shown alongside the plan.

    - `Optional<List<ActiveAlert>> activeAlerts`

      - `CONFIGURED_SPEND_LIMIT_EXCEEDED("configured_spend_limit_exceeded")`

      - `FREE_CREDITS_EXHAUSTED("free_credits_exhausted")`

      - `HAS_SPENDING_ALERT("has_spending_alert")`

      - `INTERNAL_SPENDING_ALERT("internal_spending_alert")`

      - `PLAN_SPEND_LIMIT_EXCEEDED("plan_spend_limit_exceeded")`

      - `PLAN_SPEND_LIMIT_SOFT_ALERT("plan_spend_limit_soft_alert")`

    - `Optional<List<ActiveFreeCreditsUsage>> activeFreeCreditsUsage`

      - `LocalDateTime expiresAt`

      - `String grantName`

      - `long remainingBalance`

      - `long startingBalance`

    - `Optional<Long> currentInvoiceTotalUsdCents`

    - `Optional<Long> totalExtractionAgents`

    - `Optional<Long> totalIndexedPages`

    - `Optional<Long> totalIndexes`

    - `Optional<Long> totalUsers`

### Example

```java
package ai.llamaindex.llamacloudadmin.example;

import ai.llamaindex.llamacloudadmin.client.LlamaCloudAdminClient;
import ai.llamaindex.llamacloudadmin.client.okhttp.LlamaCloudAdminOkHttpClient;
import ai.llamaindex.llamacloudadmin.models.organizations.OrganizationGetUsageParams;
import ai.llamaindex.llamacloudadmin.models.organizations.UsageAndPlan;

public final class Main {
    private Main() {}

    public static void main(String[] args) {
        LlamaCloudAdminClient client = LlamaCloudAdminOkHttpClient.fromEnv();

        UsageAndPlan usageAndPlan = client.organizations().getUsage("182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e");
    }
}
```

#### Response

```json
{
  "plan": {
    "limits": {
      "allow_pay_as_you_go": true,
      "max_concurrent_index_jobs": 0,
      "max_concurrent_parse_jobs_other": 0,
      "max_concurrent_parse_jobs_premium": 0,
      "max_data_sinks": 0,
      "max_data_sources": 0,
      "max_embedding_models": 0,
      "max_extraction_agents": 0,
      "max_extraction_jobs": 0,
      "max_extraction_runs": 0,
      "max_files_per_index": 0,
      "max_indexes": 0,
      "max_monthly_invoice_total_usd": 0,
      "max_organizations": 0,
      "max_pages_per_index": 0,
      "max_projects": 0,
      "max_published_agents": 0,
      "max_report_agent_sessions": 0,
      "max_users": 0,
      "mfa_enabled": true,
      "sso_enabled": true,
      "subscription_cost_usd": 0,
      "max_directories": 0,
      "max_directory_files_per_directory": 0,
      "max_directory_ingest_files": 0,
      "max_directory_sync_plan_actions": 0,
      "spending_soft_alerts_usd_cents": [
        0
      ]
    },
    "name": "enterprise",
    "plan_frequency": "ANNUAL",
    "id": "id",
    "current_billing_period": {
      "end_date": "2019-12-27T18:11:19.117Z",
      "start_date": "2019-12-27T18:11:19.117Z"
    },
    "ending_before": "2019-12-27T18:11:19.117Z",
    "failure_count": 0,
    "is_payment_failed": true,
    "recurring_credits": [
      {
        "credit_amount": 0,
        "credit_type": {
          "id": "id",
          "name": "name"
        },
        "name": "name",
        "priority": 0,
        "product_id": "product_id",
        "rollover_fraction": 0,
        "periods_duration": 0
      }
    ],
    "starting_on": "2019-12-27T18:11:19.117Z"
  },
  "usage": {
    "active_alerts": [
      "configured_spend_limit_exceeded"
    ],
    "active_free_credits_usage": [
      {
        "expires_at": "2019-12-27T18:11:19.117Z",
        "grant_name": "grant_name",
        "remaining_balance": 0,
        "starting_balance": 0
      }
    ],
    "current_invoice_total_usd_cents": 0,
    "total_extraction_agents": 0,
    "total_indexed_pages": 0,
    "total_indexes": 0,
    "total_users": 0
  }
}
```

## Domain Types

### Organization

- `class Organization:`

  API response schema for an organization.

  - `String id`

    The organization's unique identifier.

  - `String name`

    The organization's display name.

  - `Optional<LocalDateTime> createdAt`

    Creation datetime

  - `Optional<Metadata> metadata`

    Additional organization metadata.

  - `Optional<LocalDateTime> updatedAt`

    Update datetime

### Organization Member

- `class OrganizationMember:`

  A user's membership in an organization, including roles.

  - `String id`

    Unique identifier

  - `String organizationId`

    The organization's ID.

  - `List<UserOrganizationRole> roles`

    The roles of the user in the organization.

    - `String id`

      Unique identifier

    - `String organizationId`

      The organization's ID.

    - `Role role`

      The role.

      - `String id`

        Unique identifier

      - `String name`

        A name for the role.

      - `List<Permission> permissions`

        The actual permissions of the role.

        - `String id`

          Unique identifier

        - `boolean access`

          Whether the permission is granted or not.

        - `Optional<String> description`

          A description for the permission.

        - `String name`

          A name for the permission.

        - `Optional<LocalDateTime> createdAt`

          Creation datetime

        - `Optional<LocalDateTime> updatedAt`

          Update datetime

      - `Optional<LocalDateTime> createdAt`

        Creation datetime

      - `Optional<LocalDateTime> updatedAt`

        Update datetime

    - `String userId`

      The user's ID.

    - `Optional<LocalDateTime> createdAt`

      Creation datetime

    - `Optional<List<String>> projectIds`

      The project ID scope.

    - `Optional<LocalDateTime> updatedAt`

      Update datetime

  - `Optional<LocalDateTime> createdAt`

    Creation datetime

  - `Optional<String> email`

    The user's email address.

  - `Optional<String> invitedByUserEmail`

    The email address of the user who added the user to the organization.

  - `Optional<String> invitedByUserId`

    The user ID of the user who added the user to the organization.

  - `Optional<Boolean> pending`

    Whether the user's membership is pending account signup.

  - `Optional<LocalDateTime> updatedAt`

    Update datetime

  - `Optional<String> userId`

    The user's ID.

### Role

- `class Role:`

  Schema for a role.

  - `String id`

    Unique identifier

  - `String name`

    A name for the role.

  - `List<Permission> permissions`

    The actual permissions of the role.

    - `String id`

      Unique identifier

    - `boolean access`

      Whether the permission is granted or not.

    - `Optional<String> description`

      A description for the permission.

    - `String name`

      A name for the permission.

    - `Optional<LocalDateTime> createdAt`

      Creation datetime

    - `Optional<LocalDateTime> updatedAt`

      Update datetime

  - `Optional<LocalDateTime> createdAt`

    Creation datetime

  - `Optional<LocalDateTime> updatedAt`

    Update datetime

### Usage And Plan

- `class UsageAndPlan:`

  - `Plan plan`

    - `Limits limits`

      - `boolean allowPayAsYouGo`

        Whether usage is allowed after credit grants are exhausted

      - `Optional<Long> maxConcurrentIndexJobs`

      - `Optional<Long> maxConcurrentParseJobsOther`

      - `Optional<Long> maxConcurrentParseJobsPremium`

      - `Optional<Long> maxDataSinks`

      - `Optional<Long> maxDataSources`

      - `Optional<Long> maxEmbeddingModels`

      - `Optional<Long> maxExtractionAgents`

      - `Optional<Long> maxExtractionJobs`

      - `Optional<Long> maxExtractionRuns`

      - `Optional<Long> maxFilesPerIndex`

      - `Optional<Long> maxIndexes`

      - `Optional<Long> maxMonthlyInvoiceTotalUsd`

      - `Optional<Long> maxOrganizations`

      - `Optional<Long> maxPagesPerIndex`

      - `Optional<Long> maxProjects`

      - `Optional<Long> maxPublishedAgents`

      - `Optional<Long> maxReportAgentSessions`

      - `Optional<Long> maxUsers`

      - `boolean mfaEnabled`

      - `boolean ssoEnabled`

      - `long subscriptionCostUsd`

      - `Optional<Long> maxDirectories`

      - `Optional<Long> maxDirectoryFilesPerDirectory`

      - `Optional<Long> maxDirectoryIngestFiles`

      - `Optional<Long> maxDirectorySyncPlanActions`

      - `Optional<List<Long>> spendingSoftAlertsUsdCents`

        The amount of USD cents at which a soft alert should be triggered

    - `Name name`

      - `ENTERPRISE("enterprise")`

      - `ENTERPRISE_CONTRACT("enterprise_contract")`

      - `ENTERPRISE_POC("enterprise_poc")`

      - `FREE("free")`

      - `FREE_CONTRACT("free_contract")`

      - `FREE_V1("free_v1")`

      - `FREE_V2("free_v2")`

      - `LLAMA_PARSE("llama_parse")`

      - `PRO("pro")`

      - `PRO_V1("pro_v1")`

      - `PRO_V2("pro_v2")`

      - `STARTER_V1("starter_v1")`

      - `STARTER_V2("starter_v2")`

      - `UNKNOWN("unknown")`

      - `YC_DEAL_V1("yc_deal_v1")`

    - `PlanFrequency planFrequency`

      - `ANNUAL("ANNUAL")`

      - `MONTHLY("MONTHLY")`

      - `QUARTERLY("QUARTERLY")`

    - `Optional<String> id`

      The ID of the plan in Metronome

    - `Optional<CurrentBillingPeriod> currentBillingPeriod`

      The current billing period

      - `LocalDateTime endDate`

      - `LocalDateTime startDate`

    - `Optional<LocalDateTime> endingBefore`

      The date the plan ends on

    - `Optional<Long> failureCount`

      The number of payment failures for this organization

    - `Optional<Boolean> isPaymentFailed`

      Whether the organization has a failed payment that requires support contact

    - `Optional<List<RecurringCredit>> recurringCredits`

      - `long creditAmount`

      - `CreditType creditType`

        - `String id`

        - `String name`

      - `String name`

      - `double priority`

      - `String productId`

        The ID of the product in Metronome used to represent the credit grant

      - `double rolloverFraction`

        The fraction of the credit that will roll over to the next period, between 0 and 1

      - `Optional<Double> periodsDuration`

        How many billing periods the credit grant will last for

    - `Optional<LocalDateTime> startingOn`

      The date the plan starts on

  - `Usage usage`

    Account usage totals shown alongside the plan.

    - `Optional<List<ActiveAlert>> activeAlerts`

      - `CONFIGURED_SPEND_LIMIT_EXCEEDED("configured_spend_limit_exceeded")`

      - `FREE_CREDITS_EXHAUSTED("free_credits_exhausted")`

      - `HAS_SPENDING_ALERT("has_spending_alert")`

      - `INTERNAL_SPENDING_ALERT("internal_spending_alert")`

      - `PLAN_SPEND_LIMIT_EXCEEDED("plan_spend_limit_exceeded")`

      - `PLAN_SPEND_LIMIT_SOFT_ALERT("plan_spend_limit_soft_alert")`

    - `Optional<List<ActiveFreeCreditsUsage>> activeFreeCreditsUsage`

      - `LocalDateTime expiresAt`

      - `String grantName`

      - `long remainingBalance`

      - `long startingBalance`

    - `Optional<Long> currentInvoiceTotalUsdCents`

    - `Optional<Long> totalExtractionAgents`

    - `Optional<Long> totalIndexedPages`

    - `Optional<Long> totalIndexes`

    - `Optional<Long> totalUsers`

### User Organization Role

- `class UserOrganizationRole:`

  Schema for a user's role in an organization.

  - `String id`

    Unique identifier

  - `String organizationId`

    The organization's ID.

  - `Role role`

    The role.

    - `String id`

      Unique identifier

    - `String name`

      A name for the role.

    - `List<Permission> permissions`

      The actual permissions of the role.

      - `String id`

        Unique identifier

      - `boolean access`

        Whether the permission is granted or not.

      - `Optional<String> description`

        A description for the permission.

      - `String name`

        A name for the permission.

      - `Optional<LocalDateTime> createdAt`

        Creation datetime

      - `Optional<LocalDateTime> updatedAt`

        Update datetime

    - `Optional<LocalDateTime> createdAt`

      Creation datetime

    - `Optional<LocalDateTime> updatedAt`

      Update datetime

  - `String userId`

    The user's ID.

  - `Optional<LocalDateTime> createdAt`

    Creation datetime

  - `Optional<List<String>> projectIds`

    The project ID scope.

  - `Optional<LocalDateTime> updatedAt`

    Update datetime

# Users

## List Organization Users

`List<OrganizationMember> organizations().users().listMembers(UserListMembersParamsparams = UserListMembersParams.none(), RequestOptionsrequestOptions = RequestOptions.none())`

**get** `/api/v1/organizations/{organization_id}/users`

Get all users in an organization.

### Parameters

- `UserListMembersParams params`

  - `Optional<String> organizationId`

### Example

```java
package ai.llamaindex.llamacloudadmin.example;

import ai.llamaindex.llamacloudadmin.client.LlamaCloudAdminClient;
import ai.llamaindex.llamacloudadmin.client.okhttp.LlamaCloudAdminOkHttpClient;
import ai.llamaindex.llamacloudadmin.models.organizations.OrganizationMember;
import ai.llamaindex.llamacloudadmin.models.organizations.users.UserListMembersParams;

public final class Main {
    private Main() {}

    public static void main(String[] args) {
        LlamaCloudAdminClient client = LlamaCloudAdminOkHttpClient.fromEnv();

        List<OrganizationMember> organizationMembers = client.organizations().users().listMembers("182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e");
    }
}
```

#### Response

```json
[
  {
    "id": "182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e",
    "organization_id": "182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e",
    "roles": [
      {
        "id": "182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e",
        "organization_id": "182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e",
        "role": {
          "id": "182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e",
          "name": "x",
          "permissions": [
            {
              "id": "182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e",
              "access": true,
              "description": "description",
              "name": "x",
              "created_at": "2019-12-27T18:11:19.117Z",
              "updated_at": "2019-12-27T18:11:19.117Z"
            }
          ],
          "created_at": "2019-12-27T18:11:19.117Z",
          "updated_at": "2019-12-27T18:11:19.117Z"
        },
        "user_id": "user_id",
        "created_at": "2019-12-27T18:11:19.117Z",
        "project_ids": [
          "182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e"
        ],
        "updated_at": "2019-12-27T18:11:19.117Z"
      }
    ],
    "created_at": "2019-12-27T18:11:19.117Z",
    "email": "dev@stainless.com",
    "invited_by_user_email": "dev@stainless.com",
    "invited_by_user_id": "invited_by_user_id",
    "pending": true,
    "updated_at": "2019-12-27T18:11:19.117Z",
    "user_id": "user_id"
  }
]
```

## Add Users To Organization

`List<OrganizationMember> organizations().users().add(UserAddParamsparams, RequestOptionsrequestOptions = RequestOptions.none())`

**put** `/api/v1/organizations/{organization_id}/users`

Add a user to an organization.

### Parameters

- `UserAddParams params`

  - `Optional<String> organizationId`

  - `List<Body> body`

    - `Optional<List<String>> projectIds`

      The project IDs to add the user to.

    - `Optional<String> email`

      The user's email address.

    - `Optional<String> roleId`

      The role ID to assign to the user.

    - `Optional<String> userId`

      The user's ID.

### Example

```java
package ai.llamaindex.llamacloudadmin.example;

import ai.llamaindex.llamacloudadmin.client.LlamaCloudAdminClient;
import ai.llamaindex.llamacloudadmin.client.okhttp.LlamaCloudAdminOkHttpClient;
import ai.llamaindex.llamacloudadmin.models.organizations.OrganizationMember;
import ai.llamaindex.llamacloudadmin.models.organizations.users.UserAddParams;

public final class Main {
    private Main() {}

    public static void main(String[] args) {
        LlamaCloudAdminClient client = LlamaCloudAdminOkHttpClient.fromEnv();

        UserAddParams params = UserAddParams.builder()
            .organizationId("182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e")
            .addBody(UserAddParams.Body.builder()
                .addProjectId("182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e")
                .build())
            .build();
        List<OrganizationMember> organizationMembers = client.organizations().users().add(params);
    }
}
```

#### Response

```json
[
  {
    "id": "182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e",
    "organization_id": "182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e",
    "roles": [
      {
        "id": "182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e",
        "organization_id": "182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e",
        "role": {
          "id": "182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e",
          "name": "x",
          "permissions": [
            {
              "id": "182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e",
              "access": true,
              "description": "description",
              "name": "x",
              "created_at": "2019-12-27T18:11:19.117Z",
              "updated_at": "2019-12-27T18:11:19.117Z"
            }
          ],
          "created_at": "2019-12-27T18:11:19.117Z",
          "updated_at": "2019-12-27T18:11:19.117Z"
        },
        "user_id": "user_id",
        "created_at": "2019-12-27T18:11:19.117Z",
        "project_ids": [
          "182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e"
        ],
        "updated_at": "2019-12-27T18:11:19.117Z"
      }
    ],
    "created_at": "2019-12-27T18:11:19.117Z",
    "email": "dev@stainless.com",
    "invited_by_user_email": "dev@stainless.com",
    "invited_by_user_id": "invited_by_user_id",
    "pending": true,
    "updated_at": "2019-12-27T18:11:19.117Z",
    "user_id": "user_id"
  }
]
```

## Remove Users From Organization

`organizations().users().delete(UserDeleteParamsparams, RequestOptionsrequestOptions = RequestOptions.none())`

**delete** `/api/v1/organizations/{organization_id}/users/{member_user_id}`

Remove users from an organization.

### Parameters

- `UserDeleteParams params`

  - `String organizationId`

  - `Optional<String> memberUserId`

  - `Optional<List<String>> body`

### Example

```java
package ai.llamaindex.llamacloudadmin.example;

import ai.llamaindex.llamacloudadmin.client.LlamaCloudAdminClient;
import ai.llamaindex.llamacloudadmin.client.okhttp.LlamaCloudAdminOkHttpClient;
import ai.llamaindex.llamacloudadmin.models.organizations.users.UserDeleteParams;

public final class Main {
    private Main() {}

    public static void main(String[] args) {
        LlamaCloudAdminClient client = LlamaCloudAdminOkHttpClient.fromEnv();

        UserDeleteParams params = UserDeleteParams.builder()
            .organizationId("182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e")
            .memberUserId("member_user_id")
            .build();
        client.organizations().users().delete(params);
    }
}
```

## Assign Role To User In Organization

`UserOrganizationRole organizations().users().assignRole(UserAssignRoleParamsparams, RequestOptionsrequestOptions = RequestOptions.none())`

**put** `/api/v1/organizations/{organization_id}/users/roles`

Assign a role to a user in an organization.

### Parameters

- `UserAssignRoleParams params`

  - `Optional<String> pathOrganizationId`

  - `String bodyOrganizationId`

    The organization's ID.

  - `String roleId`

    The role's ID.

  - `String userId`

    The user's ID.

### Returns

- `class UserOrganizationRole:`

  Schema for a user's role in an organization.

  - `String id`

    Unique identifier

  - `String organizationId`

    The organization's ID.

  - `Role role`

    The role.

    - `String id`

      Unique identifier

    - `String name`

      A name for the role.

    - `List<Permission> permissions`

      The actual permissions of the role.

      - `String id`

        Unique identifier

      - `boolean access`

        Whether the permission is granted or not.

      - `Optional<String> description`

        A description for the permission.

      - `String name`

        A name for the permission.

      - `Optional<LocalDateTime> createdAt`

        Creation datetime

      - `Optional<LocalDateTime> updatedAt`

        Update datetime

    - `Optional<LocalDateTime> createdAt`

      Creation datetime

    - `Optional<LocalDateTime> updatedAt`

      Update datetime

  - `String userId`

    The user's ID.

  - `Optional<LocalDateTime> createdAt`

    Creation datetime

  - `Optional<List<String>> projectIds`

    The project ID scope.

  - `Optional<LocalDateTime> updatedAt`

    Update datetime

### Example

```java
package ai.llamaindex.llamacloudadmin.example;

import ai.llamaindex.llamacloudadmin.client.LlamaCloudAdminClient;
import ai.llamaindex.llamacloudadmin.client.okhttp.LlamaCloudAdminOkHttpClient;
import ai.llamaindex.llamacloudadmin.models.organizations.UserOrganizationRole;
import ai.llamaindex.llamacloudadmin.models.organizations.users.UserAssignRoleParams;

public final class Main {
    private Main() {}

    public static void main(String[] args) {
        LlamaCloudAdminClient client = LlamaCloudAdminOkHttpClient.fromEnv();

        UserAssignRoleParams params = UserAssignRoleParams.builder()
            .pathOrganizationId("182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e")
            .bodyOrganizationId("182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e")
            .roleId("182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e")
            .userId("user_id")
            .build();
        UserOrganizationRole userOrganizationRole = client.organizations().users().assignRole(params);
    }
}
```

#### Response

```json
{
  "id": "182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e",
  "organization_id": "182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e",
  "role": {
    "id": "182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e",
    "name": "x",
    "permissions": [
      {
        "id": "182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e",
        "access": true,
        "description": "description",
        "name": "x",
        "created_at": "2019-12-27T18:11:19.117Z",
        "updated_at": "2019-12-27T18:11:19.117Z"
      }
    ],
    "created_at": "2019-12-27T18:11:19.117Z",
    "updated_at": "2019-12-27T18:11:19.117Z"
  },
  "user_id": "user_id",
  "created_at": "2019-12-27T18:11:19.117Z",
  "project_ids": [
    "182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e"
  ],
  "updated_at": "2019-12-27T18:11:19.117Z"
}
```

## List Projects By User

`List<UserListProjectsResponse> organizations().users().listProjects(UserListProjectsParamsparams, RequestOptionsrequestOptions = RequestOptions.none())`

**get** `/api/v1/organizations/{organization_id}/users/{user_id}/projects`

List all projects for a user in an organization.

### Parameters

- `UserListProjectsParams params`

  - `String organizationId`

  - `Optional<String> userId`

### Example

```java
package ai.llamaindex.llamacloudadmin.example;

import ai.llamaindex.llamacloudadmin.client.LlamaCloudAdminClient;
import ai.llamaindex.llamacloudadmin.client.okhttp.LlamaCloudAdminOkHttpClient;
import ai.llamaindex.llamacloudadmin.models.organizations.users.UserListProjectsParams;
import ai.llamaindex.llamacloudadmin.models.organizations.users.UserListProjectsResponse;

public final class Main {
    private Main() {}

    public static void main(String[] args) {
        LlamaCloudAdminClient client = LlamaCloudAdminOkHttpClient.fromEnv();

        UserListProjectsParams params = UserListProjectsParams.builder()
            .organizationId("182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e")
            .userId("user_id")
            .build();
        List<UserListProjectsResponse> response = client.organizations().users().listProjects(params);
    }
}
```

#### Response

```json
[
  {
    "id": "182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e",
    "name": "x",
    "organization_id": "182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e",
    "created_at": "2019-12-27T18:11:19.117Z",
    "is_default": true,
    "updated_at": "2019-12-27T18:11:19.117Z"
  }
]
```

## Add User To Project

`JsonValue organizations().users().addToProject(UserAddToProjectParamsparams, RequestOptionsrequestOptions = RequestOptions.none())`

**put** `/api/v1/organizations/{organization_id}/users/{user_id}/projects`

Add a user to a project.

### Parameters

- `UserAddToProjectParams params`

  - `String organizationId`

  - `Optional<String> userId`

  - `Optional<String> projectId`

### Returns

- `class UserAddToProjectResponse:`

### Example

```java
package ai.llamaindex.llamacloudadmin.example;

import ai.llamaindex.llamacloudadmin.client.LlamaCloudAdminClient;
import ai.llamaindex.llamacloudadmin.client.okhttp.LlamaCloudAdminOkHttpClient;
import ai.llamaindex.llamacloudadmin.models.organizations.users.UserAddToProjectParams;
import ai.llamaindex.llamacloudadmin.models.organizations.users.UserAddToProjectResponse;

public final class Main {
    private Main() {}

    public static void main(String[] args) {
        LlamaCloudAdminClient client = LlamaCloudAdminOkHttpClient.fromEnv();

        UserAddToProjectParams params = UserAddToProjectParams.builder()
            .organizationId("182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e")
            .userId("user_id")
            .build();
        UserAddToProjectResponse response = client.organizations().users().addToProject(params);
    }
}
```

#### Response

```json
{}
```

## Remove User From Project

`JsonValue organizations().users().removeFromProject(UserRemoveFromProjectParamsparams, RequestOptionsrequestOptions = RequestOptions.none())`

**delete** `/api/v1/organizations/{organization_id}/users/{user_id}/projects/{project_id}`

Remove a user from a project.

### Parameters

- `UserRemoveFromProjectParams params`

  - `String organizationId`

  - `String userId`

  - `Optional<String> projectId`

### Returns

- `class UserRemoveFromProjectResponse:`

### Example

```java
package ai.llamaindex.llamacloudadmin.example;

import ai.llamaindex.llamacloudadmin.client.LlamaCloudAdminClient;
import ai.llamaindex.llamacloudadmin.client.okhttp.LlamaCloudAdminOkHttpClient;
import ai.llamaindex.llamacloudadmin.models.organizations.users.UserRemoveFromProjectParams;
import ai.llamaindex.llamacloudadmin.models.organizations.users.UserRemoveFromProjectResponse;

public final class Main {
    private Main() {}

    public static void main(String[] args) {
        LlamaCloudAdminClient client = LlamaCloudAdminOkHttpClient.fromEnv();

        UserRemoveFromProjectParams params = UserRemoveFromProjectParams.builder()
            .organizationId("182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e")
            .userId("user_id")
            .projectId("182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e")
            .build();
        UserRemoveFromProjectResponse response = client.organizations().users().removeFromProject(params);
    }
}
```

#### Response

```json
{}
```

# Roles

## List Roles

`List<Role> organizations().roles().list(RoleListParamsparams = RoleListParams.none(), RequestOptionsrequestOptions = RequestOptions.none())`

**get** `/api/v1/organizations/{organization_id}/roles`

List all roles in an organization.

### Parameters

- `RoleListParams params`

  - `Optional<String> organizationId`

### Example

```java
package ai.llamaindex.llamacloudadmin.example;

import ai.llamaindex.llamacloudadmin.client.LlamaCloudAdminClient;
import ai.llamaindex.llamacloudadmin.client.okhttp.LlamaCloudAdminOkHttpClient;
import ai.llamaindex.llamacloudadmin.models.organizations.Role;
import ai.llamaindex.llamacloudadmin.models.organizations.roles.RoleListParams;

public final class Main {
    private Main() {}

    public static void main(String[] args) {
        LlamaCloudAdminClient client = LlamaCloudAdminOkHttpClient.fromEnv();

        List<Role> roles = client.organizations().roles().list("182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e");
    }
}
```

#### Response

```json
[
  {
    "id": "182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e",
    "name": "x",
    "permissions": [
      {
        "id": "182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e",
        "access": true,
        "description": "description",
        "name": "x",
        "created_at": "2019-12-27T18:11:19.117Z",
        "updated_at": "2019-12-27T18:11:19.117Z"
      }
    ],
    "created_at": "2019-12-27T18:11:19.117Z",
    "updated_at": "2019-12-27T18:11:19.117Z"
  }
]
```
