.. -*- rst -*- ========== Projects ========== 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 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 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 ============= .. rest_method:: GET /v3/projects Relationship: ``http://docs.openstack.org/api/openstack-identity/3/rel/projects`` Lists projects. Normal response codes: 200 Error response codes: 413,405,404,403,401,400,503 Request ------- .. 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 - projects: projects - 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 Response Example ---------------- .. literalinclude:: ./samples/admin/projects-list-response.json :language: javascript Create project ============== .. rest_method:: POST /v3/projects Relationship: ``http://docs.openstack.org/api/openstack-identity/3/rel/projects`` Creates a project, including a project acting as a domain. Normal response codes: 201 Error response codes: 413,415,405,404,403,401,400,503,409 Request ------- .. rest_parameters:: parameters.yaml - project: project - is_domain: is_domain_request_body - description: project_description_request_body - domain_id: project_domain_id_request_body - enabled: project_enabled_request_body - name: project_name_request_body - parent_id: project_parent_id_request_body Request Examples ---------------- .. literalinclude:: ./samples/admin/project-create-request.json :language: javascript .. 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 Show project details ==================== .. rest_method:: GET /v3/projects/{project_id} Relationship: ``http://docs.openstack.org/api/openstack-identity/3/rel/project`` Shows details for a project. Normal response codes: 200 Error response codes: 413,405,404,403,401,400,503 Request ------- .. 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 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 Response Example ---------------- .. literalinclude:: ./samples/admin/project-show-response.json :language: javascript Response Example with ``parents_as_list`` ----------------------------------------- .. literalinclude:: ./samples/admin/project-show-parents-response.json :language: javascript Response Example with ``subtree_as_list`` ----------------------------------------- .. literalinclude:: ./samples/admin/project-show-subtree-response.json :language: javascript Update project ============== .. rest_method:: PATCH /v3/projects/{project_id} Relationship: ``http://docs.openstack.org/api/openstack-identity/3/rel/project`` Updates a project. Normal response codes: 200 Error response codes: 413,415,405,404,403,401,400,503,409 Request ------- .. rest_parameters:: parameters.yaml - project_id: project_id_path - project: project - 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 - name: project_name_update_request_body Request Example --------------- .. literalinclude:: ./samples/admin/project-update-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 - name: project_name_response_body - links: link_response_body - parent_id: project_parent_id_response_body Response Example ---------------- .. literalinclude:: ./samples/admin/project-update-response.json :language: javascript Delete project ============== .. rest_method:: DELETE /v3/projects/{project_id} Relationship: ``http://docs.openstack.org/api/openstack-identity/3/rel/project`` Deletes a project. Normal response codes: 204 Error response codes: 413,415,405,404,403,401,400,503,409 Request ------- .. rest_parameters:: parameters.yaml - project_id: project_id_path Enable or disable project and its subtree ========================================= .. rest_method:: PATCH /v3/projects/{project_id}/cascade Relationship: ``http://docs.openstack.org/api/openstack-identity/3/rel/project`` (Since Identity API v3.7) Enables or disables a project and its entire subtree. A project subtree includes all projects beneath the parent project in the hierarchy. If you include attributes other than the ``enabled`` attribute, 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 ``Forbidden (403)`` response code. Normal response codes: 200 Error response codes: 413,415,405,404,403,401,400,503,409 Request ------- .. rest_parameters:: parameters.yaml - project_id: project_id_path - project: project - enabled: project_enabled_cascade_request_body Request Example --------------- .. literalinclude:: ./samples/admin/project-enable-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 - name: project_name_response_body - links: link_response_body - parent_id: project_parent_id_response_body Response Example ---------------- .. literalinclude:: ./samples/admin/project-update-response.json :language: javascript Delete project subtree ====================== .. rest_method:: DELETE /v3/projects/{project_id}/cascade Relationship: ``http://docs.openstack.org/api/openstack-identity/3/rel/project`` (Since Identity API v3.7) Deletes a project and its entire subtree. A project subtree includes all projects beneath the parent project in the hierarchy. You must disable all the projects in the subtree before you perform this operation. Normal response codes: 204 Error response codes: 413,415,405,404,403,401,400,503,409 Request ------- .. rest_parameters:: parameters.yaml - project_id: project_id_path