> ## Documentation Index
> Fetch the complete documentation index at: https://www.c1.ai/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# Update Suggestion State

> Transition a role suggestion to a new state, such as accepted, rejected, or dismissed.



## OpenAPI

````yaml https://spec.speakeasy.com/conductor-one/conductorone/my-source-with-code-samples post /api/v1/role-mining/suggestions/{id}/state
openapi: 3.1.0
info:
  description: The C1 API is a HTTP API for managing C1 resources.
  title: C1 API
  version: 0.1.0-alpha
servers:
  - description: The C1 API server for the current tenant.
    url: https://{tenantDomain}.conductor.one
    variables:
      tenantDomain:
        default: example
        description: The domain of the tenant to use for this request.
security:
  - bearerAuth: []
    oauth: []
paths:
  /api/v1/role-mining/suggestions/{id}/state:
    post:
      tags:
        - Role Mining
      summary: Update Suggestion State
      description: >-
        Transition a role suggestion to a new state, such as accepted, rejected,
        or dismissed.
      operationId: >-
        c1.api.role_mining_management.v1.RoleMiningManagementService.UpdateSuggestionState
      parameters:
        - in: path
          name: id
          required: true
          schema:
            description: The ID of the role mining suggestion to update.
            readOnly: false
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: >-
                #/components/schemas/c1.api.role_mining_management.v1.UpdateSuggestionStateRequestInput
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: >-
                  #/components/schemas/c1.api.role_mining_management.v1.UpdateSuggestionStateResponse
          description: Successful response
      x-codeSamples:
        - lang: go
          label: UpdateSuggestionState
          source: "package main\n\nimport(\n\t\"context\"\n\t\"github.com/conductorone/conductorone-sdk-go/pkg/models/shared\"\n\tconductoronesdkgo \"github.com/conductorone/conductorone-sdk-go\"\n\t\"github.com/conductorone/conductorone-sdk-go/pkg/models/operations\"\n\t\"log\"\n)\n\nfunc main() {\n    ctx := context.Background()\n\n    s := conductoronesdkgo.New(\n        conductoronesdkgo.WithSecurity(shared.Security{\n            BearerAuth: \"<YOUR_BEARER_TOKEN_HERE>\",\n            Oauth: \"<YOUR_OAUTH_HERE>\",\n        }),\n    )\n\n    res, err := s.RoleMiningManagement.UpdateSuggestionState(ctx, operations.C1APIRoleMiningManagementV1RoleMiningManagementServiceUpdateSuggestionStateRequest{\n        ID: \"<id>\",\n    })\n    if err != nil {\n        log.Fatal(err)\n    }\n    if res.UpdateSuggestionStateResponse != nil {\n        // handle response\n    }\n}"
        - lang: typescript
          label: Typescript (SDK)
          source: >-
            import { ConductoroneSDKTypescript } from
            "conductorone-sdk-typescript";


            const conductoroneSDKTypescript = new ConductoroneSDKTypescript({
              security: {
                bearerAuth: "<YOUR_BEARER_TOKEN_HERE>",
                oauth: "<YOUR_OAUTH_HERE>",
              },
            });


            async function run() {
              const result = await conductoroneSDKTypescript.roleMiningManagement.updateSuggestionState({
                id: "<id>",
              });

              console.log(result);
            }


            run();
components:
  schemas:
    c1.api.role_mining_management.v1.UpdateSuggestionStateRequestInput:
      description: The UpdateSuggestionStateRequest message.
      properties:
        createdCatalogId:
          description: >-
            The ID of the access profile created from this suggestion, set when
            accepting.
          readOnly: false
          type: string
        state:
          description: The new state to transition the suggestion to.
          enum:
            - SUGGESTION_STATE_UNSPECIFIED
            - SUGGESTION_STATE_NEW
            - SUGGESTION_STATE_DISMISSED
            - SUGGESTION_STATE_ACCEPTED
          readOnly: false
          type: string
          x-speakeasy-unknown-values: allow
      title: Update Suggestion State Request
      type: object
      x-speakeasy-name-override: UpdateSuggestionStateRequest
    c1.api.role_mining_management.v1.UpdateSuggestionStateResponse:
      description: The UpdateSuggestionStateResponse message.
      properties:
        suggestion:
          $ref: >-
            #/components/schemas/c1.api.role_mining_management.v1.RoleMiningManagementSuggestion
      title: Update Suggestion State Response
      type: object
      x-speakeasy-name-override: UpdateSuggestionStateResponse
    c1.api.role_mining_management.v1.RoleMiningManagementSuggestion:
      description: The RoleMiningManagementSuggestion message.
      properties:
        avgCoverage:
          description: >-
            Average fraction of suggested entitlements held by each user in the
            cohort.
          readOnly: false
          type: number
        cohortFilters:
          description: The profile filters that define which users belong to this cohort.
          items:
            $ref: '#/components/schemas/c1.mcp.role_mining.v1.ProfileFilter'
          nullable: true
          readOnly: false
          type: array
        cohortSize:
          description: Total number of users in the cohort matching the profile filters.
          format: int32
          readOnly: false
          type: integer
        confidence:
          description: Overall confidence score for this suggestion, from 0.0 to 1.0.
          readOnly: false
          type: number
        createdAt:
          format: date-time
          readOnly: false
          type: string
        createdCatalogId:
          description: >-
            The ID of the access profile created when this suggestion was
            accepted, empty if not yet accepted.
          readOnly: false
          type: string
        description:
          description: >-
            A human-readable description of the proposed role and the cohort it
            serves.
          readOnly: false
          type: string
        dimensionCount:
          description: Number of distinct attribute dimensions used to define the cohort.
          format: int32
          readOnly: false
          type: integer
        entitlements:
          description: The entitlements that are commonly held by users in this cohort.
          items:
            $ref: '#/components/schemas/c1.mcp.role_mining.v1.CohortEntitlement'
          nullable: true
          readOnly: false
          type: array
        existingProfileMatches:
          description: Existing access profiles that overlap with this suggestion.
          items:
            $ref: '#/components/schemas/c1.mcp.role_mining.v1.AccessProfileMatch'
          nullable: true
          readOnly: false
          type: array
        id:
          description: Unique identifier for this suggestion.
          readOnly: false
          type: string
        insights:
          description: Human-readable insights explaining why this role was suggested.
          items:
            type: string
          nullable: true
          readOnly: false
          type: array
        lastGeneratedAt:
          format: date-time
          readOnly: false
          type: string
        runId:
          description: The ID of the analysis run that produced this suggestion.
          readOnly: false
          type: string
        suggestedName:
          description: The suggested display name for the proposed role.
          readOnly: false
          type: string
        suggestionState:
          description: >-
            Current workflow state of this suggestion (e.g., pending, accepted,
            dismissed).
          enum:
            - SUGGESTION_STATE_UNSPECIFIED
            - SUGGESTION_STATE_NEW
            - SUGGESTION_STATE_DISMISSED
            - SUGGESTION_STATE_ACCEPTED
          readOnly: false
          type: string
          x-speakeasy-unknown-values: allow
        updatedAt:
          format: date-time
          readOnly: false
          type: string
        usersWithAll:
          description: >-
            Number of users in the cohort that hold all of the suggested
            entitlements.
          format: int32
          readOnly: false
          type: integer
      title: Role Mining Management Suggestion
      type: object
      x-speakeasy-name-override: RoleMiningManagementSuggestion
    c1.mcp.role_mining.v1.ProfileFilter:
      description: |-
        ProfileFilter defines a filter on a user profile attribute.
         Use GetOrgOverview to discover available attribute keys and their values.
      properties:
        attribute:
          description: The attribute field.
          readOnly: false
          type: string
        values:
          description: The values field.
          items:
            type: string
          nullable: true
          readOnly: false
          type: array
      title: Profile Filter
      type: object
      x-speakeasy-name-override: ProfileFilter
    c1.mcp.role_mining.v1.CohortEntitlement:
      description: The CohortEntitlement message.
      properties:
        appDisplayName:
          description: The appDisplayName field.
          readOnly: false
          type: string
        appId:
          description: The appId field.
          readOnly: false
          type: string
        appResourceDisplayName:
          description: The appResourceDisplayName field.
          readOnly: false
          type: string
        appResourceTypeDisplayName:
          description: The appResourceTypeDisplayName field.
          readOnly: false
          type: string
        coverage:
          description: The coverage field.
          readOnly: false
          type: number
        entitlementDisplayName:
          description: The entitlementDisplayName field.
          readOnly: false
          type: string
        entitlementId:
          description: The entitlementId field.
          readOnly: false
          type: string
        grantedCount:
          description: The grantedCount field.
          format: int32
          readOnly: false
          type: integer
      title: Cohort Entitlement
      type: object
      x-speakeasy-name-override: CohortEntitlement
    c1.mcp.role_mining.v1.AccessProfileMatch:
      description: The AccessProfileMatch message.
      properties:
        catalogDisplayName:
          description: The catalogDisplayName field.
          readOnly: false
          type: string
        catalogId:
          description: The catalogId field.
          readOnly: false
          type: string
        matchType:
          description: The matchType field.
          enum:
            - ACCESS_PROFILE_MATCH_TYPE_UNSPECIFIED
            - ACCESS_PROFILE_MATCH_TYPE_EXACT
            - ACCESS_PROFILE_MATCH_TYPE_SUPERSET
            - ACCESS_PROFILE_MATCH_TYPE_PARTIAL
          readOnly: false
          type: string
          x-speakeasy-unknown-values: allow
        missingEntitlements:
          description: The missingEntitlements field.
          items:
            $ref: '#/components/schemas/c1.mcp.role_mining.v1.CohortEntitlement'
          nullable: true
          readOnly: false
          type: array
        overlapRatio:
          description: The overlapRatio field.
          readOnly: false
          type: number
      title: Access Profile Match
      type: object
      x-speakeasy-name-override: AccessProfileMatch
  securitySchemes:
    bearerAuth:
      scheme: bearer
      type: http
    oauth:
      description: >-
        This API uses OAuth2 with the Client Credential flow.

        Client Credentials must be sent in the BODY, not the headers.

        For an example of how to implement this, refer to the
        [c1TokenSource.Token()](https://github.com/ConductorOne/conductorone-sdk-go/blob/3375fe7c0126d17e7ec4e711693dee7b791023aa/token_source.go#L101-L187)
        function.
      flows:
        clientCredentials:
          scopes: {}
          tokenUrl: /auth/v1/token
      type: oauth2

````