# Copy QuestionSet

## This API is associated with copying questionset on the Sunbird Platform.

<mark style="color:green;">`POST`</mark> `/questionset/v2/copy/{questionSet_id}`

• The endpoint for **Copy QuestionSet** is <mark style="color:orange;">/questionset/v2/copy</mark>\
• It points to inquiry-api-service (assessment service) - <mark style="color:orange;">/questionset/v5/copy</mark> \
• You need to provide a valid Question Set Id value in <mark style="color:orange;">{questionSet\_id}</mark> field of the API URL.\
• All parameters marked with <mark style="color:red;">\*</mark> are mandatory. You must provide values for these parameters. \
• Mandatory fields cannot be null or empty.

#### Path Parameters

| Name                                              | Type   | Description                                      |
| ------------------------------------------------- | ------ | ------------------------------------------------ |
| questionSet\_id<mark style="color:red;">\*</mark> | String | Append a valid QuestionSet Id to the Request URL |

#### Headers

| Name                                            | Type   | Description                                                                                                                                                                                                                                                |
| ----------------------------------------------- | ------ | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Content-Type<mark style="color:red;">\*</mark>  | String | The Content-Type entity is the media type of the resource. The possible media types can be: <mark style="color:green;">Application/json</mark>                                                                                                             |
| Authorization<mark style="color:red;">\*</mark> | String | <p>You require authorization to make use of the API. Raise a request to the administrator for the use of the API. You will receive the authorization key. Specify the key received, here.<br>Set <mark style="color:green;">Bearer {{api\_key}}</mark></p> |
| x-channel-id                                    | String | Unique identification number associated with a root organisation.                                                                                                                                                                                          |

#### Request Body

| Name                                      | Type   | Description                                                                        |
| ----------------------------------------- | ------ | ---------------------------------------------------------------------------------- |
| request<mark style="color:red;">\*</mark> | Object | The body is the representation of the resource object for importing a question set |

{% tabs %}
{% tab title="200: OK The Copy QuestionSet operation was successful!" %}

```javascript
{
    "id": "api.questionset.copy",
    "ver": "5.0",
    "ts": "2023-06-29T07:51:03ZZ",
    "params": {
        "resmsgid": "8bba3dda-f81e-4659-8c05-55caed20d174",
        "msgid": null,
        "err": null,
        "status": "successful",
        "errmsg": null
    },
    "responseCode": "OK",
    "result": {
        "node_id": {
            "do_2138240203066900481600": "do_2138240204082216961601"
        },
        "versionKey": "1687502491400"
    }
}
```

{% endtab %}

{% tab title="400: Bad Request The Copy QuestionSet operation failed. You may have missed providing input for a mandatory parameter.'" %}

```javascript
{
    "id": "api.questionset.copy",
    "ver": "5.0",
    "ts": "2023-06-29T07:51:03ZZ",
    "params": {
        "resmsgid": "2ea62aa3-f2a9-4aeb-86f0-9d648591d1f2",
        "msgid": null,
        "err": "ERR_BAD_REQUEST",
        "status": "failed",
        "errmsg": "Hierarchy data is empty"
    },
    "responseCode": "CLIENT_ERROR",
    "result": {
        "messages": null
    }
}
```

{% endtab %}

{% tab title="500: Internal Server Error We track these errors automatically and try to set it right at the earliest." %}

```javascript
{
  "id": "api.questionset.copy",
  "ver": "5.0",
  "ts": "2023-06-29T07:51:03ZZ",
  "params": {
    "resmsgid": "f234a6f0-3ac4-11eb-b0a2-8d5c9f561887",
    "msgid": null,
    "status": "failed",
    "err": null,
    "errmsg": null
  },
  "responseCode": "SERVER_ERROR",
  "result": {}
}
```

{% endtab %}

{% tab title="404: Not Found The Copy QuestionSet operation failed. You may have requested a resource that is not existing in the server.'" %}

```json
{
  "id": "api.questionset.copyjs",
  "ver": "5.0",
  "ts": "2023-06-29T07:51:03ZZ",
  "params": {
    "resmsgid": "6fc0bd55-e99e-4ae1-80e2-7275458258ab",
    "msgid": null,
    "err": "NOT_FOUND",
    "status": "failed",
    "errmsg": "Error! Node(s) doesn't Exists. | [Invalid Node Id.]: do_1132084061164175361221"
  },
  "responseCode": "RESOURCE_NOT_FOUND",
  "result": {
    "messages": null
  }
}
```

{% endtab %}
{% endtabs %}

#### Sample Request

```json
{
  "request": {
    "questionset": {
      "createdBy": "User001",
      "createdFor": [
        "Sunbird"
      ],
      "name": "Sunbird-QS"
    }
  }
}
```

#### Request schema

<table><thead><tr><th width="139.33333333333331">Attribute</th><th width="486">Description</th><th>Type</th></tr></thead><tbody><tr><td>createdBy</td><td>Represents the the user who triggered the copy operation</td><td>string</td></tr><tr><td>createdFor</td><td>Represents the organization on behalf the request was triggered</td><td>Object</td></tr><tr><td>name</td><td>Represents the collection with which Questionset can be copied.</td><td>string</td></tr></tbody></table>

#### Success result schema

| Attribute | Type            | Description               |
| --------- | --------------- | ------------------------- |
| node\_id  | Array of Object | Node Ids that were copied |

**cURL**

```
curl --location -g --request POST '{{host}}/questionset/v2/copy/{questionSet_id}' \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer {{api_key}}' \
--header 'X-Channel-Id: {{channel_id}}' \
--data-raw '{
  "request": {
    "questionset": {
      "createdBy": "User001",
      "createdFor": [
        "Sunbird"
      ],
      "name": "Sunbird-QS"
    }
  }
}'
```
