---
updatedAt: 2026-04-05T17:14:58.000Z
agentTools:
  siteIndex: https://docs.jfrog.com/llms.txt
  projectIndex: https://docs.jfrog.com/projects/llms.txt
---

# Update Existing Project Properties

Updates an existing project's properties.


**Security:** Requires Platform Admin privileges.


# OpenAPI definition

```json
{
  "openapi": "3.1.0",
  "info": {
    "title": "JFrog Platform - Projects API",
    "description": "Projects APIs for the JFrog Platform.\n**Authentication:** Access Tokens as bearer token in authorization header (Authorization: Bearer `<token>`)\n**Security:** Security requirements vary per operation. See individual operation descriptions for details.\n",
    "version": "1.0.0",
    "contact": {
      "name": "JFrog Support"
    }
  },
  "servers": [
    {
      "url": "https://{jfrog_url}"
    }
  ],
  "tags": [
    {
      "name": "Projects",
      "description": "APIs for creating, retrieving, updating, and deleting projects in the JFrog Platform."
    }
  ],
  "security": [
    {
      "BearerAuth": []
    }
  ],
  "paths": {
    "/access/api/v1/projects/{projectKey}": {
      "put": {
        "tags": [
          "Projects"
        ],
        "summary": "Update Existing Project Properties",
        "description": "Updates an existing project's properties.\n\n**Note:** Starting from version 7.146.0, granular repository privileges\nare supported in `admin_privileges`. If at least one granular field is\nset, legacy mapping is ignored and omitted granular fields retain their\nexisting values. See the `admin_privileges` schema for details.\n\n**Security:** Requires Platform Admin privileges.\n",
        "operationId": "updateProject",
        "parameters": [
          {
            "name": "projectKey",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "The project key"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ProjectUpdateRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Project updated",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Project"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request - Invalid input",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Bad Credentials - Invalid credentials",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "Permission Denied - Insufficient permissions",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Not Found - Project not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    }
  },
  "components": {
    "securitySchemes": {
      "BearerAuth": {
        "type": "http",
        "scheme": "bearer",
        "description": "Access Token as bearer token"
      }
    },
    "schemas": {
      "Project": {
        "type": "object",
        "properties": {
          "project_key": {
            "type": "string",
            "description": "The project key"
          },
          "display_name": {
            "type": "string",
            "description": "Display name"
          },
          "description": {
            "type": "string",
            "description": "Project description"
          },
          "admin_privileges": {
            "type": "object",
            "description": "Project Admin privileges. Starting from version 7.146.0, granular repository privileges are supported. When any of the six granular fields are set, the legacy `manage_resources` and `manage_remote_repository` mappings are ignored and each granular field controls its own permission independently.",
            "properties": {
              "manage_members": {
                "type": "boolean"
              },
              "manage_resources": {
                "type": "boolean",
                "description": "Legacy field. When no granular fields are provided, controls create_local_repository, delete_local_repository, create_virtual_repository, and delete_virtual_repository."
              },
              "index_resources": {
                "type": "boolean"
              },
              "manage_remote_repository": {
                "type": "boolean",
                "description": "Legacy field. When no granular fields are provided, controls create_remote_repository and delete_remote_repository."
              },
              "create_remote_repository": {
                "type": "boolean",
                "description": "Allow Project Admin to create remote repositories. Available from Artifactory 7.146.0."
              },
              "delete_remote_repository": {
                "type": "boolean",
                "description": "Allow Project Admin to delete remote repositories. Available from Artifactory 7.146.0."
              },
              "create_local_repository": {
                "type": "boolean",
                "description": "Allow Project Admin to create local repositories. Available from Artifactory 7.146.0."
              },
              "delete_local_repository": {
                "type": "boolean",
                "description": "Allow Project Admin to delete local repositories. Available from Artifactory 7.146.0."
              },
              "create_virtual_repository": {
                "type": "boolean",
                "description": "Allow Project Admin to create virtual repositories. Available from Artifactory 7.146.0."
              },
              "delete_virtual_repository": {
                "type": "boolean",
                "description": "Allow Project Admin to delete virtual repositories. Available from Artifactory 7.146.0."
              }
            }
          },
          "storage_quota_bytes": {
            "type": "integer",
            "description": "Storage quota in bytes"
          },
          "soft_limit": {
            "type": "boolean",
            "description": "Whether the storage quota is a soft limit"
          },
          "storage_quota_email_notification": {
            "type": "boolean",
            "description": "Whether to send email notifications when storage quota is exceeded"
          }
        }
      },
      "ProjectUpdateRequest": {
        "type": "object",
        "properties": {
          "display_name": {
            "type": "string"
          },
          "description": {
            "type": "string"
          },
          "admin_privileges": {
            "type": "object",
            "description": "Project Admin privileges. If none of the six granular fields are provided, legacy mapping applies (manage_resources and manage_remote_repository control the granular permissions). If at least one granular field is set, legacy mapping is ignored and omitted granular fields retain their existing values.",
            "properties": {
              "manage_members": {
                "type": "boolean"
              },
              "manage_resources": {
                "type": "boolean",
                "description": "Legacy field. When no granular fields are provided, controls create_local_repository, delete_local_repository, create_virtual_repository, and delete_virtual_repository."
              },
              "index_resources": {
                "type": "boolean"
              },
              "manage_remote_repository": {
                "type": "boolean",
                "description": "Legacy field. When no granular fields are provided, controls create_remote_repository and delete_remote_repository."
              },
              "create_remote_repository": {
                "type": "boolean",
                "description": "Allow Project Admin to create remote repositories. Available from Artifactory 7.146.0."
              },
              "delete_remote_repository": {
                "type": "boolean",
                "description": "Allow Project Admin to delete remote repositories. Available from Artifactory 7.146.0."
              },
              "create_local_repository": {
                "type": "boolean",
                "description": "Allow Project Admin to create local repositories. Available from Artifactory 7.146.0."
              },
              "delete_local_repository": {
                "type": "boolean",
                "description": "Allow Project Admin to delete local repositories. Available from Artifactory 7.146.0."
              },
              "create_virtual_repository": {
                "type": "boolean",
                "description": "Allow Project Admin to create virtual repositories. Available from Artifactory 7.146.0."
              },
              "delete_virtual_repository": {
                "type": "boolean",
                "description": "Allow Project Admin to delete virtual repositories. Available from Artifactory 7.146.0."
              }
            }
          },
          "storage_quota_bytes": {
            "type": "integer"
          }
        }
      },
      "Error": {
        "type": "object",
        "properties": {
          "code": {
            "type": "string",
            "description": "Machine-readable error code (e.g. BAD_REQUEST, UNAUTHORIZED, NOT_FOUND, CONFLICT)."
          },
          "message": {
            "type": "string",
            "description": "Human-readable error message."
          }
        }
      },
      "ErrorResponse": {
        "type": "object",
        "description": "Standard error envelope returned for all 4xx responses by the JFrog Projects API.",
        "properties": {
          "errors": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Error"
            }
          }
        }
      }
    }
  },
  "x-readme": {
    "explorer-enabled": false
  }
}
```