# keystone.api.projects module

class keystone.api.projects.ProjectAPI(blueprint_url_prefix='', api_url_prefix='', default_mediatype='application/json', decorators=None, errors=None)

  Bases: `APIBase`

  resource_mapping = [(<class 'keystone.api.projects.ProjectsResource'>, '/projects', None, {}, ('https://docs.openstack.org/api/openstack-identity/3/rel/projects', 'stable', {})), (<class 'keystone.api.projects.ProjectResource'>, '/projects/<string:project_id>', None, {}, ('https://docs.openstack.org/api/openstack-identity/3/rel/project', 'stable', {'project_id': 'https://docs.openstack.org/api/openstack-identity/3/param/project_id'})), (<class 'keystone.api.projects.ProjectTagsResource'>, '/projects/<string:project_id>/tags', None, {}, ('https://docs.openstack.org/api/openstack-identity/3/rel/project_tags', 'stable', {'project_id': 'https://docs.openstack.org/api/openstack-identity/3/param/project_id'})), (<class 'keystone.api.projects.ProjectTagResource'>, '/projects/<string:project_id>/tags/<string:value>', None, {}, ('https://docs.openstack.org/api/openstack-identity/3/rel/project_tags', 'stable', {'project_id': 'https://docs.openstack.org/api/openstack-identity/3/param/project_id', 'value': 'https://docs.openstack.org/api/openstack-identity/3/param/tag_value'})), (<class 'keystone.api.projects.ProjectUserGrantResource'>, '/projects/<string:project_id>/users/<string:user_id>/roles/<string:role_id>', None, {}, ('https://docs.openstack.org/api/openstack-identity/3/rel/project_user_role', 'stable', {'project_id': 'https://docs.openstack.org/api/openstack-identity/3/param/project_id', 'role_id': 'https://docs.openstack.org/api/openstack-identity/3/param/role_id', 'user_id': 'https://docs.openstack.org/api/openstack-identity/3/param/user_id'})), (<class 'keystone.api.projects.ProjectUserListGrantResource'>, '/projects/<string:project_id>/users/<string:user_id>/roles', None, {}, ('https://docs.openstack.org/api/openstack-identity/3/rel/project_user_roles', 'stable', {'project_id': 'https://docs.openstack.org/api/openstack-identity/3/param/project_id', 'user_id': 'https://docs.openstack.org/api/openstack-identity/3/param/user_id'})), (<class 'keystone.api.projects.ProjectGroupGrantResource'>, '/projects/<string:project_id>/groups/<string:group_id>/roles/<string:role_id>', None, {}, ('https://docs.openstack.org/api/openstack-identity/3/rel/project_group_role', 'stable', {'group_id': 'https://docs.openstack.org/api/openstack-identity/3/param/group_id', 'project_id': 'https://docs.openstack.org/api/openstack-identity/3/param/project_id', 'role_id': 'https://docs.openstack.org/api/openstack-identity/3/param/role_id'})), (<class 'keystone.api.projects.ProjectGroupListGrantResource'>, '/projects/<string:project_id>/groups/<string:group_id>/roles', None, {}, ('https://docs.openstack.org/api/openstack-identity/3/rel/project_group_roles', 'stable', {'group_id': 'https://docs.openstack.org/api/openstack-identity/3/param/group_id', 'project_id': 'https://docs.openstack.org/api/openstack-identity/3/param/project_id'}))]

class keystone.api.projects.ProjectGroupGrantResource

  Bases: `_ProjectGrantResourceBase`

  delete(project_id, group_id, role_id)

    Delete grant of role for group on project.

    DELETE /v3/projects/{project_id}/groups/{group_id}/roles/{role_id}

  get(project_id, group_id, role_id)

    Check grant for project, group, role.

    GET/HEAD /v3/projects/{project_id/groups/{group_id}/roles/{role_id}

  methods: ClassVar[Collection[str] | None] = {'DELETE', 'GET', 'PUT'}

    The methods this view is registered for. Uses the same default (`["GET", "HEAD", "OPTIONS"]`) as `route` and `add_url_rule` by default.

  put(project_id, group_id, role_id)

    Grant role for group on project.

    PUT /v3/projects/{project_id}/groups/{group_id}/roles/{role_id}

class keystone.api.projects.ProjectGroupListGrantResource

  Bases: `_ProjectGrantResourceBase`

  get(project_id, group_id)

    List grants for group on project.

    GET/HEAD /v3/projects/{project_id}/groups/{group_id}

  methods: ClassVar[Collection[str] | None] = {'GET'}

    The methods this view is registered for. Uses the same default (`["GET", "HEAD", "OPTIONS"]`) as `route` and `add_url_rule` by default.

class keystone.api.projects.ProjectResource

  Bases: `ResourceBase`

  collection_key: str = 'projects'
  delete(project_id)

    Delete project.

    DELETE /v3/projects/{project_id}

  get(project_id: str)

    Get project.

    GET/HEAD /v3/projects/{project_id}

  get_member_from_driver
  member_key: str = 'project'
  methods: ClassVar[Collection[str] | None] = {'DELETE', 'GET', 'PATCH'}

    The methods this view is registered for. Uses the same default (`["GET", "HEAD", "OPTIONS"]`) as `route` and `add_url_rule` by default.

  patch(project_id)

    Update project.

    PATCH /v3/projects/{project_id}

class keystone.api.projects.ProjectTagResource

  Bases: `_ProjectTagResourceBase`

  delete(project_id, value)

    Delete a single tag from a project.

    /v3/projects/{project_id}/tags/{value}

  get(project_id, value)

    Get information for a single tag associated with a given project.

    GET /v3/projects/{project_id}/tags/{value}

  methods: ClassVar[Collection[str] | None] = {'DELETE', 'GET', 'PUT'}

    The methods this view is registered for. Uses the same default (`["GET", "HEAD", "OPTIONS"]`) as `route` and `add_url_rule` by default.

  put(project_id, value)

    Add a single tag to a project.

    PUT /v3/projects/{project_id}/tags/{value}

class keystone.api.projects.ProjectTagsResource

  Bases: `_ProjectTagResourceBase`

  delete(project_id)

    Delete all tags associated with a given project.

    DELETE /v3/projects/{project_id}/tags

  get(project_id)

    List tags associated with a given project.

    GET /v3/projects/{project_id}/tags

  methods: ClassVar[Collection[str] | None] = {'DELETE', 'GET', 'PUT'}

    The methods this view is registered for. Uses the same default (`["GET", "HEAD", "OPTIONS"]`) as `route` and `add_url_rule` by default.

  put(project_id)

    Update all tags associated with a given project.

    PUT /v3/projects/{project_id}/tags

class keystone.api.projects.ProjectUserGrantResource

  Bases: `_ProjectGrantResourceBase`

  delete(project_id, user_id, role_id)

    Delete grant of role for user on project.

    DELETE /v3/projects/{project_id}/users/{user_id}/roles/{role_id}

  get(project_id, user_id, role_id)

    Check grant for project, user, role.

    GET/HEAD /v3/projects/{project_id/users/{user_id}/roles/{role_id}

  methods: ClassVar[Collection[str] | None] = {'DELETE', 'GET', 'PUT'}

    The methods this view is registered for. Uses the same default (`["GET", "HEAD", "OPTIONS"]`) as `route` and `add_url_rule` by default.

  put(project_id, user_id, role_id)

    Grant role for user on project.

    PUT /v3/projects/{project_id}/users/{user_id}/roles/{role_id}

class keystone.api.projects.ProjectUserListGrantResource

  Bases: `_ProjectGrantResourceBase`

  get(project_id, user_id)

    List grants for user on project.

    GET/HEAD /v3/projects/{project_id}/users/{user_id}

  methods: ClassVar[Collection[str] | None] = {'GET'}

    The methods this view is registered for. Uses the same default (`["GET", "HEAD", "OPTIONS"]`) as `route` and `add_url_rule` by default.

class keystone.api.projects.ProjectsResource

  Bases: `ResourceBase`

  collection_key: str = 'projects'
  get()

    List projects.

    GET/HEAD /v3/projects

  get_member_from_driver
  member_key: str = 'project'
  methods: ClassVar[Collection[str] | None] = {'GET', 'POST'}

    The methods this view is registered for. Uses the same default (`["GET", "HEAD", "OPTIONS"]`) as `route` and `add_url_rule` by default.

  post()

    Create project.

    POST /v3/projects

this page last updated: 2026-06-11 21:52:50

Except where otherwise noted, this document is licensed under Creative Commons Attribution 3.0 License. See all OpenStack Legal Documents.

found an error? report a bug