> Portal Navigation:
> 
> - Append `.md` to any URL under `https://dev.wix.com/docs/` to get its markdown version.
> - Pages are either content pages (article or reference text) or menu pages (a list of links to child pages).
> - To get a menu page, truncate any URL to a parent path and append `.md` (e.g. `https://dev.wix.com/docs/sdk.md`, `https://dev.wix.com/docs/sdk/core-modules.md`).
> - Top-level index of all portals: https://dev.wix.com/docs/llms.txt
> - Full concatenated docs: https://dev.wix.com/docs/llms-full.txt

# BulkUpdateJoinApplicationTags

# Package: onlinePrograms

# Namespace: JoinApplicationsService

# Method link: https://dev.wix.com/docs/api-reference/business-management/online-programs/join-applications/bulk-update-join-application-tags.md

## Permission Scopes:
Manage Online Programs: SCOPE.CHALLENGES.MANAGE

## Introduction

Adds or removes tags on multiple join applications.

Specify which tags to assign and which tags to unassign. A tag that appears in both the list to assign and the list to unassign is assigned. Tags that don't exist are ignored. Specify at least one of `assignTags` or `unassignTags`.

To update tags on all join applications matching a filter, call [Bulk Update Join Application Tags By Filter](https://dev.wix.com/docs/api-reference/business-management/online-programs/join-applications/bulk-update-join-application-tags-by-filter.md).

---

## REST API

### Schema

```
 Method: bulkUpdateJoinApplicationTags
 Description: Adds or removes tags on multiple join applications.  Specify which tags to assign and which tags to unassign. A tag that appears in both the list to assign and the list to unassign is assigned. Tags that don't exist are ignored. Specify at least one of `assignTags` or `unassignTags`.  To update tags on all join applications matching a filter, call [Bulk Update Join Application Tags By Filter](https://dev.wix.com/docs/api-reference/business-management/online-programs/join-applications/bulk-update-join-application-tags-by-filter.md).
 URL: https://www.wixapis.com/online-programs/participants/v3/bulk/join-applications/update-tags
 Method: POST
 # Note: If the parameter `a.b` is listed under required parameters, `b` is only required if `a` is also present.
 Required parameters:  joinApplicationIds
 Method parameters: 
   param name: assignTags | type: Tags | description: Common object for tags. Should be use as in this example: message Foo { string id = 1; ... Tags tags = 5 }  example of taggable entity { id: "123" tags: { public_tags: { tag_ids:["11","22"] }, private_tags: { tag_ids: ["33", "44"] } } }  
        - name: privateTags | type: TagList | description: Tags that require an additional permission in order to access them, typically restricted from site members and visitors.  
           - name: tagIds | type: array<string> | description: List of tag GUIDs.  | validation: maxItems 100, maxLength 5
        - name: publicTags | type: TagList | description: Tags that are exposed to anyone with access to the entity, including site members and visitors.  
   param name: joinApplicationIds | type: array<joinApplicationIds> | description: IDs of the join applications to update tags for. | required: true | validation: minItems 1, maxItems 100, format GUID
   param name: unassignTags | type: Tags | description: Common object for tags. Should be use as in this example: message Foo { string id = 1; ... Tags tags = 5 }  example of taggable entity { id: "123" tags: { public_tags: { tag_ids:["11","22"] }, private_tags: { tag_ids: ["33", "44"] } } }  
        - name: privateTags | type: TagList | description: Tags that require an additional permission in order to access them, typically restricted from site members and visitors.  
        - name: publicTags | type: TagList | description: Tags that are exposed to anyone with access to the entity, including site members and visitors.  
 Return type: BulkUpdateJoinApplicationTagsResponse
  - name: results | type: array<BulkUpdateJoinApplicationTagsResult> | description: Result of each individual tag update, including metadata.  | validation: minItems 1, maxItems 100
     - name: itemMetadata | type: ItemMetadata | description: Metadata for the individual tag update.  
        - name: id | type: string | description: Item GUID. Provided only whenever possible. For example, `itemId` can't be provided when item creation has failed.  | validation: format GUID
        - name: originalIndex | type: integer | description: Index of the item within the request array. Allows for correlation between request and response items.  | validation: minimum 0
        - name: success | type: boolean | description: Whether the requested action for this item was successful. When `false`, the `error` field is returned.  
        - name: error | type: ApplicationError | description: Details about the error in case of failure.  
           - name: code | type: string | description: Error code.  
           - name: description | type: string | description: Description of the error.  
           - name: data | type: object | description: Data related to the error.  
  - name: bulkActionMetadata | type: BulkActionMetadata | description: Metadata for the bulk tag update.  
     - name: totalSuccesses | type: integer | description: Number of items that were successfully processed.  | validation: minimum 0
     - name: totalFailures | type: integer | description: Number of items that couldn't be processed.  | validation: minimum 0
     - name: undetailedFailures | type: integer | description: Number of failures without details because detailed failure threshold was exceeded.  | validation: minimum 0

 Possible Errors:
   HTTP Code: 400 | Status Code: INVALID_ARGUMENT | Application Code: EMPTY_ASSIGN_AND_UNASSIGN_LISTS | Description: none


```

### Examples

### Bulk update join application tags
Updates tags for multiple join applications by IDs

```curl
curl -X POST \
'https://www.wixapis.com/online-programs/participants/v3/bulk/join-applications/update-tags' \
-H 'Authorization: <AUTH>' \
-H 'Content-Type: application/json' \
-d '{
  "joinApplicationIds": [
    "4f87b2e3-2a0d-4b9f-9a1c-2d8e71b7e5c4"
  ],
  "assignTags": {
    "publicTags": {
      "tagIds": ["lead"]
    }
  }
}'
```

---

## JavaScript SDK

### Schema

```
 Method: wixClientAdmin.onlinePrograms.joinApplications.bulkUpdateJoinApplicationTags(joinApplicationIds, options)
 Description: Adds or removes tags on multiple join applications.  Specify which tags to assign and which tags to unassign. A tag that appears in both the list to assign and the list to unassign is assigned. Tags that don't exist are ignored. Specify at least one of `assignTags` or `unassignTags`.  To update tags on all join applications matching a filter, call [Bulk Update Join Application Tags By Filter](https://dev.wix.com/docs/api-reference/business-management/online-programs/join-applications/bulk-update-join-application-tags-by-filter.md).
 # Note: If the parameter `a.b` is listed under required parameters, `b` is only required if `a` is also present.
 Required parameters:  joinApplicationIds
 Method parameters: 
   param name: joinApplicationIds | type: array<array> | description: IDs of the join applications to update tags for. | required: true | validation: minItems 1, maxItems 100, format GUID
   param name: options | type: BulkUpdateJoinApplicationTagsOptions  none  
        - name: assignTags | type: Tags | description: Tags to assign to the join applications. Specify at least one of `assignTags` or `unassignTags`.  
           - name: privateTags | type: TagList | description: Tags that require an additional permission in order to access them, typically restricted from site members and visitors.  
              - name: tagIds | type: array<string> | description: List of tag GUIDs.  | validation: maxItems 100, maxLength 5
           - name: publicTags | type: TagList | description: Tags that are exposed to anyone with access to the entity, including site members and visitors.  
        - name: unassignTags | type: Tags | description: Tags to unassign from the join applications. Specify at least one of `assignTags` or `unassignTags`.  
 Return type: PROMISE<BulkUpdateJoinApplicationTagsResponse>
  - name: results | type: array<BulkUpdateJoinApplicationTagsResult> | description: Result of each individual tag update, including metadata.  | validation: minItems 1, maxItems 100
     - name: itemMetadata | type: ItemMetadata | description: Metadata for the individual tag update.  
        - name: _id | type: string | description: Item GUID. Provided only whenever possible. For example, `itemId` can't be provided when item creation has failed.  | validation: format GUID
        - name: originalIndex | type: integer | description: Index of the item within the request array. Allows for correlation between request and response items.  | validation: minimum 0
        - name: success | type: boolean | description: Whether the requested action for this item was successful. When `false`, the `error` field is returned.  
        - name: error | type: ApplicationError | description: Details about the error in case of failure.  
           - name: code | type: string | description: Error code.  
           - name: description | type: string | description: Description of the error.  
           - name: data | type: object | description: Data related to the error.  
  - name: bulkActionMetadata | type: BulkActionMetadata | description: Metadata for the bulk tag update.  
     - name: totalSuccesses | type: integer | description: Number of items that were successfully processed.  | validation: minimum 0
     - name: totalFailures | type: integer | description: Number of items that couldn't be processed.  | validation: minimum 0
     - name: undetailedFailures | type: integer | description: Number of failures without details because detailed failure threshold was exceeded.  | validation: minimum 0

 Possible Errors:
   HTTP Code: 400 | Status Code: INVALID_ARGUMENT | Application Code: EMPTY_ASSIGN_AND_UNASSIGN_LISTS | Description: none


```

### Examples

### Bulk update join application tags
Assigns tags to multiple join applications by ID

```javascript
import { joinApplications } from "@wix/online-programs";

async function bulkUpdateJoinApplicationTags() {
  const response = await joinApplications.bulkUpdateJoinApplicationTags(
    ["4f87b2e3-2a0d-4b9f-9a1c-2d8e71b7e5c4"],
    { assignTags: { publicTags: { tagIds: ["lead"] } } },
  );
}

/* Promise resolves to:
 * {
 *   "results": [
 *     {
 *       "itemMetadata": {
 *         "_id": "4f87b2e3-2a0d-4b9f-9a1c-2d8e71b7e5c4",
 *         "originalIndex": 0,
 *         "success": true
 *       }
 *     }
 *   ],
 *   "bulkActionMetadata": {
 *     "totalSuccesses": 1,
 *     "totalFailures": 0,
 *     "undetailedFailures": 0
 *   }
 * }
 */

```

### bulkUpdateJoinApplicationTags (self-hosted)
Self-hosted SDK calls require you to [create a client](https://dev.wix.com/docs/sdk/articles/work-with-the-sdk/about-the-wix-client.md).

```javascript
import { createClient } from '@wix/sdk';
import { joinApplications } from '@wix/online-programs';
// Import the auth strategy for the relevant access type
// Import the relevant host module if needed

const myWixClient = createClient ({
  modules: { joinApplications },
  // Include the auth strategy and host as relevant
});


async function bulkUpdateJoinApplicationTags(joinApplicationIds,options) {
  const response = await myWixClient.joinApplications.bulkUpdateJoinApplicationTags(joinApplicationIds,options);
};
```

---