> ## Documentation Index
> Fetch the complete documentation index at: https://conductorone-hunner-patch-1.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# Add Campaign Entitlements

> AddCampaignEntitlements adds entitlements to an access review campaign's selection without
 replacing existing selections or their policies. For large selections, send chunks of at most
 200 entitlements and wait for each call to finish before sending the next. Entitlements that
 are already selected are skipped, so retrying a chunk is safe. If the campaign has no apps and
 resources scope yet, it is set to the selected entitlements. The per-campaign entitlement quota
 applies to the total selection. To change user, account or grant scope afterwards, use
 AccessReviewService.Update with update_mask scope_v2 rather than SetCampaignScopeAndEntitlements,
 which would replace the whole selection.



## OpenAPI

````yaml https://spec.speakeasy.com/conductor-one/conductorone/my-source-with-code-samples post /api/v1/access_review/{access_review_id}/entitlements/add
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/access_review/{access_review_id}/entitlements/add:
    post:
      tags:
        - Access Review
      summary: Add Campaign Entitlements
      description: >-
        AddCampaignEntitlements adds entitlements to an access review campaign's
        selection without
         replacing existing selections or their policies. For large selections, send chunks of at most
         200 entitlements and wait for each call to finish before sending the next. Entitlements that
         are already selected are skipped, so retrying a chunk is safe. If the campaign has no apps and
         resources scope yet, it is set to the selected entitlements. The per-campaign entitlement quota
         applies to the total selection. To change user, account or grant scope afterwards, use
         AccessReviewService.Update with update_mask scope_v2 rather than SetCampaignScopeAndEntitlements,
         which would replace the whole selection.
      operationId: >-
        c1.api.accessreview.v1.AccessReviewSetupEntitlementService.AddCampaignEntitlements
      parameters:
        - in: path
          name: access_review_id
          required: true
          schema:
            description: The ID of the access review campaign to add entitlements to.
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: >-
                #/components/schemas/c1.api.accessreview.v1.AccessReviewAddCampaignEntitlementsRequestInput
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: >-
                  #/components/schemas/c1.api.accessreview.v1.AccessReviewAddCampaignEntitlementsResponse
          description: Successful response
components:
  schemas:
    c1.api.accessreview.v1.AccessReviewAddCampaignEntitlementsRequestInput:
      description: The AccessReviewAddCampaignEntitlementsRequest message.
      properties:
        entitlements:
          description: >-
            The entitlements to add. Entitlements that are already selected are
            skipped.
          items:
            $ref: >-
              #/components/schemas/c1.api.accessreview.v1.AccessReviewSetupEntitlementInput
          type:
            - array
            - 'null'
      title: Access Review Add Campaign Entitlements Request
      type: object
      x-speakeasy-name-override: AccessReviewAddCampaignEntitlementsRequest
    c1.api.accessreview.v1.AccessReviewAddCampaignEntitlementsResponse:
      description: The AccessReviewAddCampaignEntitlementsResponse message.
      properties:
        entitlementCount:
          description: >-
            The total number of entitlements selected for the campaign after
            this call.
          format: int32
          type: integer
      title: Access Review Add Campaign Entitlements Response
      type: object
      x-speakeasy-name-override: AccessReviewAddCampaignEntitlementsResponse
    c1.api.accessreview.v1.AccessReviewSetupEntitlementInput:
      description: Identifies an entitlement to add or remove from a campaign's setup.
      properties:
        appEntitlementId:
          description: The ID of the entitlement.
          type: string
        appId:
          description: The ID of the application that owns the entitlement.
          type: string
      title: Access Review Setup Entitlement Input
      type: object
      x-speakeasy-name-override: AccessReviewSetupEntitlementInput
  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

````