Description: Create a policy.
Since: 3.116.x
Security: Requires a valid user with the "MANAGE_POLICIES" permission.
Usage: POST /xray/api/v1/curation/policies
Consumes: application/json
Produces: application/json
Path Parameters: None
Query Parameters: None
Request Body
Name | Type | Description |
---|---|---|
| Boolean | Automatically set to true when the policy is created. Automatically set to false if something makes the policy’s effective scope empty, for example, the only repo the policy can cover is deleted. Can be set to true when updating the policy if the effective scope is not empty when updating the policy. |
| string | Name of policy |
| string | One of:
|
| Used with scope: | |
| Used with scope: | |
| Used with scope: | |
| string | One of: Dry run policies only accumulate audit logs, they don’t block packages from being downloaded. |
| string | The ID of the condition used by the policy. |
| Array[PackageWaiver] | List of package waivers |
| Array[LabelWaiver] | List of label waivers |
| Array[string] | List of email addresses that receive notifications when the policy causes a package to be blocked |
| string | One of: f If If If |
| Array[string] | List of JFrog Access groups used by |
PackageWaiver
Name | Type | Description |
---|---|---|
| string | ID of this package waiver. Needs to be sent in PUT request when modifying the policy to keep the waiver. |
| string | Package type. One of: " Additional package types will be added. |
| string | Name of package from Catalog |
| Boolean | Set to true to indicate all versions |
| Array[string] | List of specific versions of the package from the Catalog |
| string | A way to document why the waiver was created |
| string | Username of user who created the waiver |
| string | Timestamp when waiver was created |
LabelWaiver
Name | Type | Description |
---|---|---|
| string | Id of this label waiver. Needs to be sent in PUT request when modifying the policy to keep the waiver. |
| string | A label from the custom Catalog. |
| string | A way to document why the waiver was created |
| string | Username of user who created the waiver |
| string | Timestamp when waiver was created |
Response Body
Name | Type | Description |
---|---|---|
| string | ID of the policy, used in path parameters to update or delete the policy. |
| string | Username of user who created the policy |
| string | Username of user who updated the policy |
| string | Timestamp when policy was created |
| string | Timestamp when policy was updated |
| Boolean | Automatically set to true when policy is created. Automatically set to false if something makes the policy’s effective scope empty, for example the only repo the policy can cover is deleted. Can be set to true when updating the policy if the effective scope is not empty when updating the policy. |
| string | Name of policy |
| string | One of:
|
| Used with scope= | |
| Used with scope= | |
| Used with scope= | |
| string | One of: Dry run policies only accumulate audit logs, they don’t block packages from being downloaded. |
| string | The ID of the condition used by the policy. |
| Condition | The condition used by the policy, selected by |
| Array[PackageWaiver] | List of package waivers |
| Array[LabelWaiver] | List of label waivers |
| Array[string] | List of email addresses that receive notification when the policy causes a package to be blocked |
| string | One of: forbidden, If forbidden, waiver requests cannot be created for the policy. If manual, then waiver requests can be created for the policy, and must be approved by users from the Jfrog Access groups listed in decision_owners. If auto_approved, then waiver requests are allowed to be created and when created they are immediately automatically approved by the system, recording who, when and why created the waiver request. |
| Array[string] | List of JFrog Access groups used by |
Sample Request
POST /xray/api/v1/curation/policies Authorization: … Content-Type: application/json { "name": "critical vulns only", "condition_id": "3", "scope": "all_repos", "policy_action": "block", "waiver_request_config": "forbidden" }
Sample Response
{ "id": "4", "created_by": "admin", "updated_by": "admin", "created_at": "2025-03-12T16:05:24+02:00", "updated_at": "2025-03-12T16:05:24+02:00", "enabled": true, "name": "critical vulns only", "scope": "all_repos", "policy_action": "block", "condition_id": "3", "condition": { "id": "3", "is_custom": false, "created_at": "2023-08-01T03:00:00+03:00", "updated_at": "2023-08-01T03:00:00+03:00", "risk_type": "security", "supported_pkg_types": ["npm", "PyPI", "Maven", "Go", "NuGet", "Conan", "Gems", "Gradle"], "condition_template_id": "CVECVSSRange", "name": "CVE with CVSS score of 9 or above (with or without a fix version available)", "param_values": [ { "param_id": "vulnerability_cvss_score_range", "value": [ 9, 10 ] }, { "param_id": "apply_only_if_fix_is_available", "value": false } ] }, "waiver_request_config": "forbidden" }
Response Codes
Status | Description |
---|---|
201 | Created |
400 | Bad request |