<NME> projects.inc
<BEF> .. -*- rst -*-

==========
 Projects
==========

A project is the base unit of ownership. Resources are owned by a
specific project. A project is owned by a specific domain.

(Since v3.4) You can create a hierarchy of projects by setting a
parent ID when you create projects. All projects in a hierarchy
must be owned by the same domain.

(Since v3.6) Optionally, you can create a project that behaves both
as a project and a domain. As a domain, the project provides a name
space in which you can create users, groups, and other projects. If
you create a project that behaves as a domain, you cannot update
this project to behave like a regular project.


List projects
=============
  A project's name must be unique within a domain and no more than 64 characters.
  A project's name must be able to be sent within valid JSON, which could be any
  UTF-8 character. However, this is constrained to the given backend where project
  names are stored. For instance, MySQL's restrictions states that UTF-8 support
  is constrained to the characters in the Basic Multilingual Plane (BMP).
  Supplementary characters are not permitted. Note that this last restriction is
  generally true for all ``names`` within resources of the Identity API.
  Creating a project without using a domain scoped token, i.e. using a project
  scoped token or a system scoped token, and also without specifying a domain or
  domain_id, the project will automatically be created on the default domain.


List projects
=============

.. rest_method::  GET /v3/projects

Lists projects.

Relationship: ``https://docs.openstack.org/api/openstack-identity/3/rel/projects``

Request
-------

Parameters
~~~~~~~~~~

.. rest_parameters:: parameters.yaml

   - domain_id: domain_id_query
   - enabled: project_enabled_query
   - is_domain: is_domain_query
   - name: project_name_query
   - parent_id: parent_id_query

Response
--------

Parameters
~~~~~~~~~~

.. rest_parameters:: parameters.yaml

   - links: link_collection

Creates a project.

Normal response codes: 201
Error response codes: 413,415,405,404,403,401,400,503,409

~~~~~~~~~~~~

.. rest_status_code:: success status.yaml

   - 200

.. rest_status_code:: error status.yaml

   - 400
   - 401
   - 403

Example
~~~~~~~

.. literalinclude:: ./samples/admin/projects-list-response.json
   :language: javascript


Create project
==============

.. rest_method::  POST /v3/projects

Creates a project, where the project may act as a domain.

Relationship: ``https://docs.openstack.org/api/openstack-identity/3/rel/projects``

Request
-------

Parameters
~~~~~~~~~~

.. rest_parameters:: parameters.yaml

   - project: project
   - name: project_name_request_body
   - is_domain: is_domain_request_body
   - description: project_description_request_body
   - domain_id: project_domain_id_request_body
   - enabled: project_enabled_request_body
   - parent_id: project_parent_id_request_body
   - tags: project_tags_request_body
   - options: request_project_options_body_not_required

Examples
~~~~~~~~

Sample for creating a regular project:

.. literalinclude:: ./samples/admin/project-create-request.json
   :language: javascript

Sample for creating a project that also acts as a domain:

.. literalinclude:: ./samples/admin/project-create-domain-request.json
   :language: javascript

Response
--------

Parameters
~~~~~~~~~~

.. rest_parameters:: parameters.yaml

   - project: project
   - is_domain: is_domain_response_body
   - description: project_description_response_body
   - domain_id: project_domain_id_response_body
   - enabled: project_enabled_response_body
   - id: project_id
   - links: link_response_body
   - name: project_name_response_body
   - parent_id: project_parent_id_response_body
   - options: response_project_options_body_required

Status Codes
~~~~~~~~~~~~

.. rest_status_code:: success status.yaml

   - 201

.. rest_status_code:: error status.yaml

   - 400
   - 401
   - 403
   - 409

Show project details
====================

.. rest_method::  GET /v3/projects/{project_id}

Shows details for a project.

Relationship: ``https://docs.openstack.org/api/openstack-identity/3/rel/project``

Request
-------

Parameters
~~~~~~~~~~

.. rest_parameters:: parameters.yaml

   - project_id: project_id_path
   - parents_as_list: parents_as_list
   - subtree_as_list: subtree_as_list
   - parents_as_ids: parents_as_ids
   - subtree_as_ids: subtree_as_ids
   - include_limits: include_limits

Response
--------

Parameters
~~~~~~~~~~

.. rest_parameters:: parameters.yaml

   - project: project
   - is_domain: is_domain_response_body
   - description: project_description_response_body
   - domain_id: project_domain_id_response_body
   - enabled: project_enabled_response_body
   - id: project_id
   - links: link_response_body
   - name: project_name_response_body
   - parent_id: project_parent_id_response_body
   - options: response_project_options_body_required

Status Codes
~~~~~~~~~~~~

.. rest_status_code:: success status.yaml

   - 200

.. rest_status_code:: error status.yaml

   - 400

.. rest_method::  PATCH /v3/projects/{project_id}/cascade

(Since v3.6) Enables or disables a project and its entire subtree.

A project subtree includes all projects beneath the parent project
in the hierarchy.
.. literalinclude:: ./samples/admin/project-show-response.json
   :language: javascript

code.

If you perform this action against a project that acts as a domain
(``is_domain`` is set to ``true``, this call fails and returns the
``Forbidden (403)`` response code.


Normal response codes: 200
Error response codes: 413,415,405,404,403,401,400,503,409

.. literalinclude:: ./samples/admin/project-show-subtree-response.json
   :language: javascript


Update project
==============

.. rest_method::  PATCH /v3/projects/{project_id}

Updates a project.

Relationship: ``https://docs.openstack.org/api/openstack-identity/3/rel/project``

Request
-------

Parameters
~~~~~~~~~~

.. rest_parameters:: parameters.yaml

   - project_id: project_id_path
   - project: project
   - name: project_name_update_request_body
   - is_domain: is_domain_request_body
   - description: project_description_request_body
   - domain_id: project_domain_id_update_request_body
   - enabled: project_enabled_update_request_body
   - tags: project_tags_request_body
   - options: request_project_options_body_not_required

Example
~~~~~~~

.. literalinclude:: ./samples/admin/project-update-request.json
   :language: javascript

Response
--------

.. rest_method::  DELETE /v3/projects/{project_id}/cascade

(Since v3.6) Deletes a project and its entire subtree.

A project subtree includes all projects beneath the parent project
in the hierarchy. You must disable the projects in the subtree
before you perform this operation.

Normal response codes: 204
   - enabled: project_enabled_response_body
   - id: project_id
   - name: project_name_response_body
   - links: link_response_body
   - parent_id: project_parent_id_response_body
   - options: response_project_options_body_required


Status Codes
~~~~~~~~~~~~

.. rest_status_code:: success status.yaml

   - 200

.. rest_status_code:: error status.yaml

   - 400
   - 401
   - 403
   - 404
   - 409

Example
~~~~~~~

.. literalinclude:: ./samples/admin/project-update-response.json
   :language: javascript


Delete project
==============

.. rest_method::  DELETE /v3/projects/{project_id}

Deletes a project.

Relationship: ``https://docs.openstack.org/api/openstack-identity/3/rel/project``

Request
-------

Parameters
~~~~~~~~~~

.. rest_parameters:: parameters.yaml

   - project_id: project_id_path

Response
--------

Status Codes
~~~~~~~~~~~~

.. rest_status_code:: success status.yaml

   - 204

.. rest_status_code:: error status.yaml

   - 400
   - 401
   - 403
   - 404

<MSG> Merge "Improve introdcution to api-ref projects"
<DFF> @@ -4,19 +4,28 @@
  Projects
 ==========
 
-A project is the base unit of ownership. Resources are owned by a
+A project is the base unit of resource ownership. Resources are owned by a
 specific project. A project is owned by a specific domain.
 
-(Since v3.4) You can create a hierarchy of projects by setting a
-parent ID when you create projects. All projects in a hierarchy
-must be owned by the same domain.
+(Since Identity API v3.4) You can create a hierarchy of projects by setting a
+``parent_id`` when you create a project. All projects in a hierarchy must be
+owned by the same domain.
 
-(Since v3.6) Optionally, you can create a project that behaves both
-as a project and a domain. As a domain, the project provides a name
-space in which you can create users, groups, and other projects. If
-you create a project that behaves as a domain, you cannot update
-this project to behave like a regular project.
+(Since Identity API v3.6) Projects may, in addition to acting as containers for
+OpenStack resources, act as a domain (by setting the attribute ``is_domain`` to
+``true``), in which case it provides a namespace in which users, groups and
+other projects can be created. In fact, a domain created using the
+``POST /domains`` API will actually be represented as a project with
+``is_domain`` set to ``true`` with no parent (``parent_id`` is null).
 
+Given this, all projects are considered part of a project hierarchy. Projects
+created in a domain prior to v3.6 are represented as a two-level hierarchy,
+with a project that has ``is_domain`` set to ``true`` as the root and all other
+projects referencing the root as their parent.
+
+A project acting as a domain can potentially also act as a container for
+OpenStack resources, although this depends on whether the policy rule for the
+relevant resource creation allows this.
 
 List projects
 =============
@@ -67,6 +76,12 @@ Create project
 
 Creates a project.
 
+Projects that are acting as a domain (i.e. with ``parent_id`` set to
+``true``) must also be specified with no parent (i.e. if ``parent_id`` is
+included it must be null). Issuing a create project request for a project
+acting as a domain with a ``parent_id`` that is not null will fail with a
+``Bad Request (400)`` response code being returned.
+
 Normal response codes: 201
 Error response codes: 413,415,405,404,403,401,400,503,409
 
@@ -218,7 +233,7 @@ Enable or disable project and its subtree
 
 .. rest_method::  PATCH /v3/projects/{project_id}/cascade
 
-(Since v3.6) Enables or disables a project and its entire subtree.
+(Since Identity API v3.6) Enables or disables a project and its entire subtree.
 
 A project subtree includes all projects beneath the parent project
 in the hierarchy.
@@ -228,10 +243,9 @@ this call fails and returns the ``Bad Request (400)`` response
 code.
 
 If you perform this action against a project that acts as a domain
-(``is_domain`` is set to ``true``, this call fails and returns the
+(``is_domain`` is set to ``true``), this call fails and returns the
 ``Forbidden (403)`` response code.
 
-
 Normal response codes: 200
 Error response codes: 413,415,405,404,403,401,400,503,409
 
@@ -277,10 +291,10 @@ Delete project subtree
 
 .. rest_method::  DELETE /v3/projects/{project_id}/cascade
 
-(Since v3.6) Deletes a project and its entire subtree.
+(Since Identity API v3.6) Deletes a project and its entire subtree.
 
 A project subtree includes all projects beneath the parent project
-in the hierarchy. You must disable the projects in the subtree
+in the hierarchy. You must disable all the projects in the subtree
 before you perform this operation.
 
 Normal response codes: 204

{'commit': 'diff --git a/api-ref/source/v3/projects.inc b/api-ref/source/v3/projects.inc\nindex f78681ff7..9a31af2d5 100644\n--- a/api-ref/source/v3/projects.inc\n+++ b/api-ref/source/v3/projects.inc\n@@ -4,19 +4,28 @@\n  Projects\n ==========\n \n-A project is the base unit of ownership. Resources are owned by a\n+A project is the base unit of resource ownership. Resources are owned by a\n specific project. A project is owned by a specific domain.\n \n-(Since v3.4) You can create a hierarchy of projects by setting a\n-parent ID when you create projects. All projects in a hierarchy\n-must be owned by the same domain.\n+(Since Identity API v3.4) You can create a hierarchy of projects by setting a\n+``parent_id`` when you create a project. All projects in a hierarchy must be\n+owned by the same domain.\n \n-(Since v3.6) Optionally, you can create a project that behaves both\n-as a project and a domain. As a domain, the project provides a name\n-space in which you can create users, groups, and other projects. If\n-you create a project that behaves as a domain, you cannot update\n-this project to behave like a regular project.\n+(Since Identity API v3.6) Projects may, in addition to acting as containers for\n+OpenStack resources, act as a domain (by setting the attribute ``is_domain`` to\n+``true``), in which case it provides a namespace in which users, groups and\n+other projects can be created. In fact, a domain created using the\n+``POST /domains`` API will actually be represented as a project with\n+``is_domain`` set to ``true`` with no parent (``parent_id`` is null).\n \n+Given this, all projects are considered part of a project hierarchy. Projects\n+created in a domain prior to v3.6 are represented as a two-level hierarchy,\n+with a project that has ``is_domain`` set to ``true`` as the root and all other\n+projects referencing the root as their parent.\n+\n+A project acting as a domain can potentially also act as a container for\n+OpenStack resources, although this depends on whether the policy rule for the\n+relevant resource creation allows this.\n \n List projects\n =============\n@@ -67,6 +76,12 @@ Create project\n \n Creates a project.\n \n+Projects that are acting as a domain (i.e. with ``parent_id`` set to\n+``true``) must also be specified with no parent (i.e. if ``parent_id`` is\n+included it must be null). Issuing a create project request for a project\n+acting as a domain with a ``parent_id`` that is not null will fail with a\n+``Bad Request (400)`` response code being returned.\n+\n Normal response codes: 201\n Error response codes: 413,415,405,404,403,401,400,503,409\n \n@@ -218,7 +233,7 @@ Enable or disable project and its subtree\n \n .. rest_method::  PATCH /v3/projects/{project_id}/cascade\n \n-(Since v3.6) Enables or disables a project and its entire subtree.\n+(Since Identity API v3.6) Enables or disables a project and its entire subtree.\n \n A project subtree includes all projects beneath the parent project\n in the hierarchy.\n@@ -228,10 +243,9 @@ this call fails and returns the ``Bad Request (400)`` response\n code.\n \n If you perform this action against a project that acts as a domain\n-(``is_domain`` is set to ``true``, this call fails and returns the\n+(``is_domain`` is set to ``true``), this call fails and returns the\n ``Forbidden (403)`` response code.\n \n-\n Normal response codes: 200\n Error response codes: 413,415,405,404,403,401,400,503,409\n \n@@ -277,10 +291,10 @@ Delete project subtree\n \n .. rest_method::  DELETE /v3/projects/{project_id}/cascade\n \n-(Since v3.6) Deletes a project and its entire subtree.\n+(Since Identity API v3.6) Deletes a project and its entire subtree.\n \n A project subtree includes all projects beneath the parent project\n-in the hierarchy. You must disable the projects in the subtree\n+in the hierarchy. You must disable all the projects in the subtree\n before you perform this operation.\n \n Normal response codes: 204\n', 'commit_subject': 'Merge "Improve introdcution to api-ref projects"', 'repo_name': 'openstack/keystone', 'committer': {'name': 'Gerrit Code Review', 'email': '61e62b213a1a56f7695845df4fc372a10cb0a73e@openstack.org', 'time_sec': '1468821644', 'tz_offset': '0', 'date': {'seconds': '1468821644'}}, 'commit_tree': '9baac0ed264a85fcf8c45b7a37030ab323cb78e1', 'commit_message': 'Merge "Improve introdcution to api-ref projects"', 'language_name': 'Shell', 'license': 'apache-2.0', 'hunks': '@@ -4,19 +4,28 @@\n  Projects\n ==========\n \n-A project is the base unit of ownership. Resources are owned by a\n+A project is the base unit of resource ownership. Resources are owned by a\n specific project. A project is owned by a specific domain.\n \n-(Since v3.4) You can create a hierarchy of projects by setting a\n-parent ID when you create projects. All projects in a hierarchy\n-must be owned by the same domain.\n+(Since Identity API v3.4) You can create a hierarchy of projects by setting a\n+``parent_id`` when you create a project. All projects in a hierarchy must be\n+owned by the same domain.\n \n-(Since v3.6) Optionally, you can create a project that behaves both\n-as a project and a domain. As a domain, the project provides a name\n-space in which you can create users, groups, and other projects. If\n-you create a project that behaves as a domain, you cannot update\n-this project to behave like a regular project.\n+(Since Identity API v3.6) Projects may, in addition to acting as containers for\n+OpenStack resources, act as a domain (by setting the attribute ``is_domain`` to\n+``true``), in which case it provides a namespace in which users, groups and\n+other projects can be created. In fact, a domain created using the\n+``POST /domains`` API will actually be represented as a project with\n+``is_domain`` set to ``true`` with no parent (``parent_id`` is null).\n \n+Given this, all projects are considered part of a project hierarchy. Projects\n+created in a domain prior to v3.6 are represented as a two-level hierarchy,\n+with a project that has ``is_domain`` set to ``true`` as the root and all other\n+projects referencing the root as their parent.\n+\n+A project acting as a domain can potentially also act as a container for\n+OpenStack resources, although this depends on whether the policy rule for the\n+relevant resource creation allows this.\n \n List projects\n =============\n@@ -67,6 +76,12 @@ Create project\n \n Creates a project.\n \n+Projects that are acting as a domain (i.e. with ``parent_id`` set to\n+``true``) must also be specified with no parent (i.e. if ``parent_id`` is\n+included it must be null). Issuing a create project request for a project\n+acting as a domain with a ``parent_id`` that is not null will fail with a\n+``Bad Request (400)`` response code being returned.\n+\n Normal response codes: 201\n Error response codes: 413,415,405,404,403,401,400,503,409\n \n@@ -218,7 +233,7 @@ Enable or disable project and its subtree\n \n .. rest_method::  PATCH /v3/projects/{project_id}/cascade\n \n-(Since v3.6) Enables or disables a project and its entire subtree.\n+(Since Identity API v3.6) Enables or disables a project and its entire subtree.\n \n A project subtree includes all projects beneath the parent project\n in the hierarchy.\n@@ -228,10 +243,9 @@ this call fails and returns the ``Bad Request (400)`` response\n code.\n \n If you perform this action against a project that acts as a domain\n-(``is_domain`` is set to ``true``, this call fails and returns the\n+(``is_domain`` is set to ``true``), this call fails and returns the\n ``Forbidden (403)`` response code.\n \n-\n Normal response codes: 200\n Error response codes: 413,415,405,404,403,401,400,503,409\n \n@@ -277,10 +291,10 @@ Delete project subtree\n \n .. rest_method::  DELETE /v3/projects/{project_id}/cascade\n \n-(Since v3.6) Deletes a project and its entire subtree.\n+(Since Identity API v3.6) Deletes a project and its entire subtree.\n \n A project subtree includes all projects beneath the parent project\n-in the hierarchy. You must disable the projects in the subtree\n+in the hierarchy. You must disable all the projects in the subtree\n before you perform this operation.\n \n Normal response codes: 204\n', 'addition_count': 28, 'deletion_count': 14, 'src_file': 'a/api-ref/source/v3/projects.inc', 'tgt_file': 'b/api-ref/source/v3/projects.inc', 'file_extension': '.inc', 'before_file': ".. -*- rst -*-\n\n==========\n Projects\n==========\n\nA project is the base unit of ownership. Resources are owned by a\nspecific project. A project is owned by a specific domain.\n\n(Since v3.4) You can create a hierarchy of projects by setting a\nparent ID when you create projects. All projects in a hierarchy\nmust be owned by the same domain.\n\n(Since v3.6) Optionally, you can create a project that behaves both\nas a project and a domain. As a domain, the project provides a name\nspace in which you can create users, groups, and other projects. If\nyou create a project that behaves as a domain, you cannot update\nthis project to behave like a regular project.\n\n\nList projects\n=============\n  A project's name must be unique within a domain and no more than 64 characters.\n  A project's name must be able to be sent within valid JSON, which could be any\n  UTF-8 character. However, this is constrained to the given backend where project\n  names are stored. For instance, MySQL's restrictions states that UTF-8 support\n  is constrained to the characters in the Basic Multilingual Plane (BMP).\n  Supplementary characters are not permitted. Note that this last restriction is\n  generally true for all ``names`` within resources of the Identity API.\n  Creating a project without using a domain scoped token, i.e. using a project\n  scoped token or a system scoped token, and also without specifying a domain or\n  domain_id, the project will automatically be created on the default domain.\n\n\nList projects\n=============\n\n.. rest_method::  GET /v3/projects\n\nLists projects.\n\nRelationship: ``https://docs.openstack.org/api/openstack-identity/3/rel/projects``\n\nRequest\n-------\n\nParameters\n~~~~~~~~~~\n\n.. rest_parameters:: parameters.yaml\n\n   - domain_id: domain_id_query\n   - enabled: project_enabled_query\n   - is_domain: is_domain_query\n   - name: project_name_query\n   - parent_id: parent_id_query\n\nResponse\n--------\n\nParameters\n~~~~~~~~~~\n\n.. rest_parameters:: parameters.yaml\n\n   - links: link_collection\n\nCreates a project.\n\nNormal response codes: 201\nError response codes: 413,415,405,404,403,401,400,503,409\n\n~~~~~~~~~~~~\n\n.. rest_status_code:: success status.yaml\n\n   - 200\n\n.. rest_status_code:: error status.yaml\n\n   - 400\n   - 401\n   - 403\n\nExample\n~~~~~~~\n\n.. literalinclude:: ./samples/admin/projects-list-response.json\n   :language: javascript\n\n\nCreate project\n==============\n\n.. rest_method::  POST /v3/projects\n\nCreates a project, where the project may act as a domain.\n\nRelationship: ``https://docs.openstack.org/api/openstack-identity/3/rel/projects``\n\nRequest\n-------\n\nParameters\n~~~~~~~~~~\n\n.. rest_parameters:: parameters.yaml\n\n   - project: project\n   - name: project_name_request_body\n   - is_domain: is_domain_request_body\n   - description: project_description_request_body\n   - domain_id: project_domain_id_request_body\n   - enabled: project_enabled_request_body\n   - parent_id: project_parent_id_request_body\n   - tags: project_tags_request_body\n   - options: request_project_options_body_not_required\n\nExamples\n~~~~~~~~\n\nSample for creating a regular project:\n\n.. literalinclude:: ./samples/admin/project-create-request.json\n   :language: javascript\n\nSample for creating a project that also acts as a domain:\n\n.. literalinclude:: ./samples/admin/project-create-domain-request.json\n   :language: javascript\n\nResponse\n--------\n\nParameters\n~~~~~~~~~~\n\n.. rest_parameters:: parameters.yaml\n\n   - project: project\n   - is_domain: is_domain_response_body\n   - description: project_description_response_body\n   - domain_id: project_domain_id_response_body\n   - enabled: project_enabled_response_body\n   - id: project_id\n   - links: link_response_body\n   - name: project_name_response_body\n   - parent_id: project_parent_id_response_body\n   - options: response_project_options_body_required\n\nStatus Codes\n~~~~~~~~~~~~\n\n.. rest_status_code:: success status.yaml\n\n   - 201\n\n.. rest_status_code:: error status.yaml\n\n   - 400\n   - 401\n   - 403\n   - 409\n\nShow project details\n====================\n\n.. rest_method::  GET /v3/projects/{project_id}\n\nShows details for a project.\n\nRelationship: ``https://docs.openstack.org/api/openstack-identity/3/rel/project``\n\nRequest\n-------\n\nParameters\n~~~~~~~~~~\n\n.. rest_parameters:: parameters.yaml\n\n   - project_id: project_id_path\n   - parents_as_list: parents_as_list\n   - subtree_as_list: subtree_as_list\n   - parents_as_ids: parents_as_ids\n   - subtree_as_ids: subtree_as_ids\n   - include_limits: include_limits\n\nResponse\n--------\n\nParameters\n~~~~~~~~~~\n\n.. rest_parameters:: parameters.yaml\n\n   - project: project\n   - is_domain: is_domain_response_body\n   - description: project_description_response_body\n   - domain_id: project_domain_id_response_body\n   - enabled: project_enabled_response_body\n   - id: project_id\n   - links: link_response_body\n   - name: project_name_response_body\n   - parent_id: project_parent_id_response_body\n   - options: response_project_options_body_required\n\nStatus Codes\n~~~~~~~~~~~~\n\n.. rest_status_code:: success status.yaml\n\n   - 200\n\n.. rest_status_code:: error status.yaml\n\n   - 400\n\n.. rest_method::  PATCH /v3/projects/{project_id}/cascade\n\n(Since v3.6) Enables or disables a project and its entire subtree.\n\nA project subtree includes all projects beneath the parent project\nin the hierarchy.\n.. literalinclude:: ./samples/admin/project-show-response.json\n   :language: javascript\n\ncode.\n\nIf you perform this action against a project that acts as a domain\n(``is_domain`` is set to ``true``, this call fails and returns the\n``Forbidden (403)`` response code.\n\n\nNormal response codes: 200\nError response codes: 413,415,405,404,403,401,400,503,409\n\n.. literalinclude:: ./samples/admin/project-show-subtree-response.json\n   :language: javascript\n\n\nUpdate project\n==============\n\n.. rest_method::  PATCH /v3/projects/{project_id}\n\nUpdates a project.\n\nRelationship: ``https://docs.openstack.org/api/openstack-identity/3/rel/project``\n\nRequest\n-------\n\nParameters\n~~~~~~~~~~\n\n.. rest_parameters:: parameters.yaml\n\n   - project_id: project_id_path\n   - project: project\n   - name: project_name_update_request_body\n   - is_domain: is_domain_request_body\n   - description: project_description_request_body\n   - domain_id: project_domain_id_update_request_body\n   - enabled: project_enabled_update_request_body\n   - tags: project_tags_request_body\n   - options: request_project_options_body_not_required\n\nExample\n~~~~~~~\n\n.. literalinclude:: ./samples/admin/project-update-request.json\n   :language: javascript\n\nResponse\n--------\n\n.. rest_method::  DELETE /v3/projects/{project_id}/cascade\n\n(Since v3.6) Deletes a project and its entire subtree.\n\nA project subtree includes all projects beneath the parent project\nin the hierarchy. You must disable the projects in the subtree\nbefore you perform this operation.\n\nNormal response codes: 204\n   - enabled: project_enabled_response_body\n   - id: project_id\n   - name: project_name_response_body\n   - links: link_response_body\n   - parent_id: project_parent_id_response_body\n   - options: response_project_options_body_required\n\n\nStatus Codes\n~~~~~~~~~~~~\n\n.. rest_status_code:: success status.yaml\n\n   - 200\n\n.. rest_status_code:: error status.yaml\n\n   - 400\n   - 401\n   - 403\n   - 404\n   - 409\n\nExample\n~~~~~~~\n\n.. literalinclude:: ./samples/admin/project-update-response.json\n   :language: javascript\n\n\nDelete project\n==============\n\n.. rest_method::  DELETE /v3/projects/{project_id}\n\nDeletes a project.\n\nRelationship: ``https://docs.openstack.org/api/openstack-identity/3/rel/project``\n\nRequest\n-------\n\nParameters\n~~~~~~~~~~\n\n.. rest_parameters:: parameters.yaml\n\n   - project_id: project_id_path\n\nResponse\n--------\n\nStatus Codes\n~~~~~~~~~~~~\n\n.. rest_status_code:: success status.yaml\n\n   - 204\n\n.. rest_status_code:: error status.yaml\n\n   - 400\n   - 401\n   - 403\n   - 404\n", 'message': 'Merge "Improve introdcution to api-ref projects"', 'author_name': 'Gerrit Code Review', 'lang': 'inc'}