> ## 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.

# Add Manually Managed Members

> Add users as manually managed members of an app entitlement. These memberships are tracked directly by ConductorOne rather than synced from the app.



## OpenAPI

````yaml https://spec.speakeasy.com/conductor-one/conductorone/my-source-with-code-samples post /api/v1/apps/{app_id}/entitlements/{app_entitlement_id}/add-manual-user
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/apps/{app_id}/entitlements/{app_entitlement_id}/add-manual-user:
    post:
      tags:
        - App Entitlement
      summary: Add Manually Managed Members
      description: >-
        Add users as manually managed members of an app entitlement. These
        memberships are tracked directly by ConductorOne rather than synced from
        the app.
      operationId: c1.api.app.v1.AppEntitlements.AddManuallyManagedMembers
      parameters:
        - in: path
          name: app_id
          required: true
          schema:
            description: The ID of the app that contains the entitlement.
            readOnly: false
            type: string
        - in: path
          name: app_entitlement_id
          required: true
          schema:
            description: The ID of the app entitlement to add manually managed members to.
            readOnly: false
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: >-
                #/components/schemas/c1.api.app.v1.AddManuallyManagedUsersRequestInput
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: >-
                  #/components/schemas/c1.api.app.v1.ManuallyManagedUsersResponse
          description: Successful response
      x-codeSamples:
        - lang: go
          label: AddManuallyManagedMembers
          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.AppEntitlements.AddManuallyManagedMembers(ctx, operations.C1APIAppV1AppEntitlementsAddManuallyManagedMembersRequest{\n        AppEntitlementID: \"<id>\",\n        AppID: \"<id>\",\n    })\n    if err != nil {\n        log.Fatal(err)\n    }\n    if res.ManuallyManagedUsersResponse != 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.appEntitlements.addManuallyManagedMembers({
                appId: "<id>",
                appEntitlementId: "<id>",
              });

              console.log(result);
            }


            run();
components:
  schemas:
    c1.api.app.v1.AddManuallyManagedUsersRequestInput:
      description: The AddManuallyManagedUsersRequest message.
      properties:
        userIds:
          description: The IDs of users to add as manually managed members.
          items:
            type: string
          nullable: true
          readOnly: false
          type: array
      title: Add Manually Managed Users Request
      type: object
      x-speakeasy-name-override: AddManuallyManagedUsersRequest
    c1.api.app.v1.ManuallyManagedUsersResponse:
      description: The ManuallyManagedUsersResponse message.
      properties:
        bulkActionId:
          description: >-
            The ID of the bulk action created to process the membership
            additions.
          readOnly: false
          type: string
        failedUsersErrorMap:
          additionalProperties:
            type: string
          description: >-
            A map of user IDs to error messages for users that could not be
            added.
          readOnly: false
          type: object
      title: Manually Managed Users Response
      type: object
      x-speakeasy-name-override: ManuallyManagedUsersResponse
  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

````