Skip to content

Openportal Unmanaged Projects

Operations Summary

Method Endpoint Description
Core CRUD
GET /api/openportal-unmanaged-projects/ List projects
GET /api/openportal-unmanaged-projects/{uuid}/ Retrieve project details
POST /api/openportal-unmanaged-projects/ Create a new project
PUT /api/openportal-unmanaged-projects/{uuid}/ Update project details
PATCH /api/openportal-unmanaged-projects/{uuid}/ Partially update project details
DELETE /api/openportal-unmanaged-projects/{uuid}/ Delete a project
Permissions & Users
GET /api/openportal-unmanaged-projects/{uuid}/list_users/ List users
POST /api/openportal-unmanaged-projects/{uuid}/add_user/ Add user
POST /api/openportal-unmanaged-projects/{uuid}/delete_user/ Delete user
POST /api/openportal-unmanaged-projects/{uuid}/update_user/ Update user
Other Actions
GET /api/openportal-unmanaged-projects/{uuid}/checklist/ Get checklist with questions and existing answers
GET /api/openportal-unmanaged-projects/checklist-template/ Get checklist template for creating new objects
GET /api/openportal-unmanaged-projects/{uuid}/completion_status/ Get checklist completion status
GET /api/openportal-unmanaged-projects/{uuid}/stats/ Get project resource usage statistics
POST /api/openportal-unmanaged-projects/{uuid}/move_project/ Move project to another customer
POST /api/openportal-unmanaged-projects/{uuid}/recover/ Recover a soft-deleted project
POST /api/openportal-unmanaged-projects/{uuid}/submit_answers/ Submit checklist answers

Core CRUD

List projects

Retrieve a list of projects. The list is filtered based on the user's permissions. By default, only active projects are shown.

1
2
3
4
http \
  GET \
  https://api.example.com/api/openportal-unmanaged-projects/ \
  Authorization:"Token YOUR_API_TOKEN"
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
from waldur_api_client.client import AuthenticatedClient
from waldur_api_client.api.openportal_unmanaged_projects import openportal_unmanaged_projects_list # (1)

client = AuthenticatedClient(
    base_url="https://api.example.com", token="YOUR_API_TOKEN"
)
response = openportal_unmanaged_projects_list.sync(client=client)

for item in response:
    print(item)
  1. API Source: openportal_unmanaged_projects_list
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
import { openportalUnmanagedProjectsList } from 'waldur-js-client';

try {
  const response = await openportalUnmanagedProjectsList({
  auth: "Token YOUR_API_TOKEN"
});
  console.log('Success:', response);
} catch (error) {
  console.error('Error:', error);
}
Name Type Description
backend_id string
can_admin boolean Return a list of projects where current user is admin.
can_manage boolean Return a list of projects where current user is manager or a customer owner.
conceal_finished_projects boolean Conceal finished projects
created string (date-time) Created after
customer array Multiple values may be separated by commas.
customer_abbreviation string
customer_name string
customer_native_name string
description string
field array
include_terminated boolean Include soft-deleted (terminated) projects. Only available to staff and support users, or users with organizational roles who can see their terminated projects.
is_removed boolean
modified string (date-time) Modified after
name string
name_exact string
o array Ordering

page integer A page number within the paginated result set.
page_size integer Number of results to return per page.
query string Filter by name, slug, UUID, backend ID or resource effective ID
slug string

200 -

The response body is an array of objects, where each object has the following structure:

Field Type Description
url string (uri)
uuid string (uuid)
name string
slug string
customer string (uri)
customer_uuid string (uuid)
customer_name string
customer_slug string
customer_native_name string
customer_abbreviation string
description string
customer_display_billing_info_in_projects boolean
created string (date-time)
type string (uri)
type_name string
type_uuid string (uuid)
backend_id string
start_date string (date)
end_date string (date)
end_date_requested_by string (uri)
oecd_fos_2007_code any
oecd_fos_2007_label string
is_industry boolean
image string (uri)
resources_count integer
max_service_accounts integer Maximum number of service accounts allowed
kind any
is_removed boolean
termination_metadata any
staff_notes string
grace_period_days integer Number of extra days after project end date before resources are terminated. Overrides customer-level setting.
project_credit number (double)
marketplace_resource_count object (free-form)
billing_price_estimate any

Retrieve project details

Fetch the details of a specific project by its UUID. Users can access details of terminated projects they previously had access to.

1
2
3
4
http \
  GET \
  https://api.example.com/api/openportal-unmanaged-projects/a1b2c3d4-e5f6-7890-abcd-ef1234567890/ \
  Authorization:"Token YOUR_API_TOKEN"
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
from waldur_api_client.client import AuthenticatedClient
from waldur_api_client.api.openportal_unmanaged_projects import openportal_unmanaged_projects_retrieve # (1)

client = AuthenticatedClient(
    base_url="https://api.example.com", token="YOUR_API_TOKEN"
)
response = openportal_unmanaged_projects_retrieve.sync(
    uuid="a1b2c3d4-e5f6-7890-abcd-ef1234567890",
    client=client
)

print(response)
  1. API Source: openportal_unmanaged_projects_retrieve
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
import { openportalUnmanagedProjectsRetrieve } from 'waldur-js-client';

try {
  const response = await openportalUnmanagedProjectsRetrieve({
  auth: "Token YOUR_API_TOKEN",
  path: {
    "uuid": "a1b2c3d4-e5f6-7890-abcd-ef1234567890"
  }
});
  console.log('Success:', response);
} catch (error) {
  console.error('Error:', error);
}
Name Type Required
uuid string (uuid)
Name Type
field array

200 -

Field Type Description
url string (uri)
uuid string (uuid)
name string
slug string
customer string (uri)
customer_uuid string (uuid)
customer_name string
customer_slug string
customer_native_name string
customer_abbreviation string
description string
customer_display_billing_info_in_projects boolean
created string (date-time)
type string (uri)
type_name string
type_uuid string (uuid)
backend_id string
start_date string (date)
end_date string (date)
end_date_requested_by string (uri)
oecd_fos_2007_code any
oecd_fos_2007_label string
is_industry boolean
image string (uri)
resources_count integer
max_service_accounts integer Maximum number of service accounts allowed
kind any
is_removed boolean
termination_metadata any
staff_notes string
grace_period_days integer Number of extra days after project end date before resources are terminated. Overrides customer-level setting.
project_credit number (double)
marketplace_resource_count object (free-form)
billing_price_estimate any

Create a new project

A new project can be created by users with staff privilege (is_staff=True) or customer owners. Project resource quota is optional.

1
2
3
4
5
6
http \
  POST \
  https://api.example.com/api/openportal-unmanaged-projects/ \
  Authorization:"Token YOUR_API_TOKEN" \
  name="my-awesome-openportal-unmanaged-project" \
  customer="https://api.example.com/api/customer/a1b2c3d4-e5f6-7890-abcd-ef1234567890/"
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
from waldur_api_client.client import AuthenticatedClient
from waldur_api_client.models.project_request import ProjectRequest # (1)
from waldur_api_client.api.openportal_unmanaged_projects import openportal_unmanaged_projects_create # (2)

client = AuthenticatedClient(
    base_url="https://api.example.com", token="YOUR_API_TOKEN"
)

body_data = ProjectRequest(
    name="my-awesome-openportal-unmanaged-project",
    customer="https://api.example.com/api/customer/a1b2c3d4-e5f6-7890-abcd-ef1234567890/"
)
response = openportal_unmanaged_projects_create.sync(
    client=client,
    body=body_data
)

print(response)
  1. Model Source: ProjectRequest
  2. API Source: openportal_unmanaged_projects_create
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
import { openportalUnmanagedProjectsCreate } from 'waldur-js-client';

try {
  const response = await openportalUnmanagedProjectsCreate({
  auth: "Token YOUR_API_TOKEN",
  body: {
    "name": "my-awesome-openportal-unmanaged-project",
    "customer": "https://api.example.com/api/customer/a1b2c3d4-e5f6-7890-abcd-ef1234567890/"
  }
});
  console.log('Success:', response);
} catch (error) {
  console.error('Error:', error);
}
Field Type Required Description
name string
slug string
customer string (uri)
description string
type string (uri)
backend_id string
start_date string (date)
end_date string (date)
oecd_fos_2007_code any
is_industry boolean
image string (binary)
kind any
staff_notes string
grace_period_days integer Number of extra days after project end date before resources are terminated. Overrides customer-level setting.

201 -

Field Type Description
url string (uri)
uuid string (uuid)
name string
slug string
customer string (uri)
customer_uuid string (uuid)
customer_name string
customer_slug string
customer_native_name string
customer_abbreviation string
description string
customer_display_billing_info_in_projects boolean
created string (date-time)
type string (uri)
type_name string
type_uuid string (uuid)
backend_id string
start_date string (date)
end_date string (date)
end_date_requested_by string (uri)
oecd_fos_2007_code any
oecd_fos_2007_label string
is_industry boolean
image string (uri)
resources_count integer
max_service_accounts integer Maximum number of service accounts allowed
kind any
is_removed boolean
termination_metadata any
staff_notes string
grace_period_days integer Number of extra days after project end date before resources are terminated. Overrides customer-level setting.
project_credit number (double)
marketplace_resource_count object (free-form)
billing_price_estimate any

Update project details

Update the details of a project. Requires project administrator or customer owner permissions.

1
2
3
4
5
6
http \
  PUT \
  https://api.example.com/api/openportal-unmanaged-projects/a1b2c3d4-e5f6-7890-abcd-ef1234567890/ \
  Authorization:"Token YOUR_API_TOKEN" \
  name="my-awesome-openportal-unmanaged-project" \
  customer="https://api.example.com/api/customer/a1b2c3d4-e5f6-7890-abcd-ef1234567890/"
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
from waldur_api_client.client import AuthenticatedClient
from waldur_api_client.models.project_request import ProjectRequest # (1)
from waldur_api_client.api.openportal_unmanaged_projects import openportal_unmanaged_projects_update # (2)

client = AuthenticatedClient(
    base_url="https://api.example.com", token="YOUR_API_TOKEN"
)

body_data = ProjectRequest(
    name="my-awesome-openportal-unmanaged-project",
    customer="https://api.example.com/api/customer/a1b2c3d4-e5f6-7890-abcd-ef1234567890/"
)
response = openportal_unmanaged_projects_update.sync(
    uuid="a1b2c3d4-e5f6-7890-abcd-ef1234567890",
    client=client,
    body=body_data
)

print(response)
  1. Model Source: ProjectRequest
  2. API Source: openportal_unmanaged_projects_update
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
import { openportalUnmanagedProjectsUpdate } from 'waldur-js-client';

try {
  const response = await openportalUnmanagedProjectsUpdate({
  auth: "Token YOUR_API_TOKEN",
  path: {
    "uuid": "a1b2c3d4-e5f6-7890-abcd-ef1234567890"
  },
  body: {
    "name": "my-awesome-openportal-unmanaged-project",
    "customer": "https://api.example.com/api/customer/a1b2c3d4-e5f6-7890-abcd-ef1234567890/"
  }
});
  console.log('Success:', response);
} catch (error) {
  console.error('Error:', error);
}
Name Type Required
uuid string (uuid)
Field Type Required Description
name string
slug string
customer string (uri)
description string
type string (uri)
backend_id string
start_date string (date)
end_date string (date)
oecd_fos_2007_code any
is_industry boolean
image string (binary)
kind any
staff_notes string
grace_period_days integer Number of extra days after project end date before resources are terminated. Overrides customer-level setting.

200 -

Field Type Description
url string (uri)
uuid string (uuid)
name string
slug string
customer string (uri)
customer_uuid string (uuid)
customer_name string
customer_slug string
customer_native_name string
customer_abbreviation string
description string
customer_display_billing_info_in_projects boolean
created string (date-time)
type string (uri)
type_name string
type_uuid string (uuid)
backend_id string
start_date string (date)
end_date string (date)
end_date_requested_by string (uri)
oecd_fos_2007_code any
oecd_fos_2007_label string
is_industry boolean
image string (uri)
resources_count integer
max_service_accounts integer Maximum number of service accounts allowed
kind any
is_removed boolean
termination_metadata any
staff_notes string
grace_period_days integer Number of extra days after project end date before resources are terminated. Overrides customer-level setting.
project_credit number (double)
marketplace_resource_count object (free-form)
billing_price_estimate any

Partially update project details

Partially update the details of a project. Requires project administrator or customer owner permissions.

1
2
3
4
http \
  PATCH \
  https://api.example.com/api/openportal-unmanaged-projects/a1b2c3d4-e5f6-7890-abcd-ef1234567890/ \
  Authorization:"Token YOUR_API_TOKEN"
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
from waldur_api_client.client import AuthenticatedClient
from waldur_api_client.models.patched_project_request import PatchedProjectRequest # (1)
from waldur_api_client.api.openportal_unmanaged_projects import openportal_unmanaged_projects_partial_update # (2)

client = AuthenticatedClient(
    base_url="https://api.example.com", token="YOUR_API_TOKEN"
)

body_data = PatchedProjectRequest()
response = openportal_unmanaged_projects_partial_update.sync(
    uuid="a1b2c3d4-e5f6-7890-abcd-ef1234567890",
    client=client,
    body=body_data
)

print(response)
  1. Model Source: PatchedProjectRequest
  2. API Source: openportal_unmanaged_projects_partial_update
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
import { openportalUnmanagedProjectsPartialUpdate } from 'waldur-js-client';

try {
  const response = await openportalUnmanagedProjectsPartialUpdate({
  auth: "Token YOUR_API_TOKEN",
  path: {
    "uuid": "a1b2c3d4-e5f6-7890-abcd-ef1234567890"
  }
});
  console.log('Success:', response);
} catch (error) {
  console.error('Error:', error);
}
Name Type Required
uuid string (uuid)
Field Type Required Description
name string
slug string
customer string (uri)
description string
type string (uri)
backend_id string
start_date string (date)
end_date string (date)
oecd_fos_2007_code any
is_industry boolean
image string (binary)
kind any
staff_notes string
grace_period_days integer Number of extra days after project end date before resources are terminated. Overrides customer-level setting.

200 -

Field Type Description
url string (uri)
uuid string (uuid)
name string
slug string
customer string (uri)
customer_uuid string (uuid)
customer_name string
customer_slug string
customer_native_name string
customer_abbreviation string
description string
customer_display_billing_info_in_projects boolean
created string (date-time)
type string (uri)
type_name string
type_uuid string (uuid)
backend_id string
start_date string (date)
end_date string (date)
end_date_requested_by string (uri)
oecd_fos_2007_code any
oecd_fos_2007_label string
is_industry boolean
image string (uri)
resources_count integer
max_service_accounts integer Maximum number of service accounts allowed
kind any
is_removed boolean
termination_metadata any
staff_notes string
grace_period_days integer Number of extra days after project end date before resources are terminated. Overrides customer-level setting.
project_credit number (double)
marketplace_resource_count object (free-form)
billing_price_estimate any

Delete a project

Delete a project. If the project has any active resources, the deletion request will fail with a 409 Conflict response. This action performs a soft-delete, and the project can be recovered later.

1
2
3
4
http \
  DELETE \
  https://api.example.com/api/openportal-unmanaged-projects/a1b2c3d4-e5f6-7890-abcd-ef1234567890/ \
  Authorization:"Token YOUR_API_TOKEN"
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
from waldur_api_client.client import AuthenticatedClient
from waldur_api_client.api.openportal_unmanaged_projects import openportal_unmanaged_projects_destroy # (1)

client = AuthenticatedClient(
    base_url="https://api.example.com", token="YOUR_API_TOKEN"
)
response = openportal_unmanaged_projects_destroy.sync(
    uuid="a1b2c3d4-e5f6-7890-abcd-ef1234567890",
    client=client
)

print(response)
  1. API Source: openportal_unmanaged_projects_destroy
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
import { openportalUnmanagedProjectsDestroy } from 'waldur-js-client';

try {
  const response = await openportalUnmanagedProjectsDestroy({
  auth: "Token YOUR_API_TOKEN",
  path: {
    "uuid": "a1b2c3d4-e5f6-7890-abcd-ef1234567890"
  }
});
  console.log('Success:', response);
} catch (error) {
  console.error('Error:', error);
}
Name Type Required
uuid string (uuid)

204 - No response body


Permissions & Users

List users

1
2
3
4
http \
  GET \
  https://api.example.com/api/openportal-unmanaged-projects/a1b2c3d4-e5f6-7890-abcd-ef1234567890/list_users/ \
  Authorization:"Token YOUR_API_TOKEN"
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
from waldur_api_client.client import AuthenticatedClient
from waldur_api_client.api.openportal_unmanaged_projects import openportal_unmanaged_projects_list_users_list # (1)

client = AuthenticatedClient(
    base_url="https://api.example.com", token="YOUR_API_TOKEN"
)
response = openportal_unmanaged_projects_list_users_list.sync(
    uuid="a1b2c3d4-e5f6-7890-abcd-ef1234567890",
    client=client
)

for item in response:
    print(item)
  1. API Source: openportal_unmanaged_projects_list_users_list
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
import { openportalUnmanagedProjectsListUsersList } from 'waldur-js-client';

try {
  const response = await openportalUnmanagedProjectsListUsersList({
  auth: "Token YOUR_API_TOKEN",
  path: {
    "uuid": "a1b2c3d4-e5f6-7890-abcd-ef1234567890"
  }
});
  console.log('Success:', response);
} catch (error) {
  console.error('Error:', error);
}
Name Type Required
uuid string (uuid)
Name Type Description
field array Fields to include in response
full_name string User full name
native_name string User native name
o array Ordering fields
page integer A page number within the paginated result set.
page_size integer Number of results to return per page.
role string (uuid) Role UUID or name
search_string string Search string for user
user string (uuid) User UUID
user_slug string User slug
user_url string User URL
username string User username

200 -

The response body is an array of objects, where each object has the following structure:

Field Type Description
uuid string (uuid)
created string (date-time)
expiration_time string (date-time)
role_name string
role_uuid string (uuid)
user_email string (email)
user_full_name string
user_username string Required. 128 characters or fewer. Lowercase letters, numbers and @/./+/-/_ characters
user_uuid string (uuid)
user_image string (uri)
created_by_full_name string
created_by_uuid string (uuid)

Add user

1
2
3
4
5
6
http \
  POST \
  https://api.example.com/api/openportal-unmanaged-projects/a1b2c3d4-e5f6-7890-abcd-ef1234567890/add_user/ \
  Authorization:"Token YOUR_API_TOKEN" \
  role="string-value" \
  user="a1b2c3d4-e5f6-7890-abcd-ef1234567890"
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
from waldur_api_client.client import AuthenticatedClient
from waldur_api_client.models.user_role_create_request import UserRoleCreateRequest # (1)
from waldur_api_client.api.openportal_unmanaged_projects import openportal_unmanaged_projects_add_user # (2)

client = AuthenticatedClient(
    base_url="https://api.example.com", token="YOUR_API_TOKEN"
)

body_data = UserRoleCreateRequest(
    role="string-value",
    user="a1b2c3d4-e5f6-7890-abcd-ef1234567890"
)
response = openportal_unmanaged_projects_add_user.sync(
    uuid="a1b2c3d4-e5f6-7890-abcd-ef1234567890",
    client=client,
    body=body_data
)

print(response)
  1. Model Source: UserRoleCreateRequest
  2. API Source: openportal_unmanaged_projects_add_user
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
import { openportalUnmanagedProjectsAddUser } from 'waldur-js-client';

try {
  const response = await openportalUnmanagedProjectsAddUser({
  auth: "Token YOUR_API_TOKEN",
  path: {
    "uuid": "a1b2c3d4-e5f6-7890-abcd-ef1234567890"
  },
  body: {
    "role": "string-value",
    "user": "a1b2c3d4-e5f6-7890-abcd-ef1234567890"
  }
});
  console.log('Success:', response);
} catch (error) {
  console.error('Error:', error);
}
Name Type Required
uuid string (uuid)
Field Type Required
role string
user string (uuid)
expiration_time string (date-time)

201 -

Field Type
expiration_time string (date-time)

400 -

Field Type Description
non_field_errors array of strings

Delete user

1
2
3
4
5
6
http \
  POST \
  https://api.example.com/api/openportal-unmanaged-projects/a1b2c3d4-e5f6-7890-abcd-ef1234567890/delete_user/ \
  Authorization:"Token YOUR_API_TOKEN" \
  role="string-value" \
  user="a1b2c3d4-e5f6-7890-abcd-ef1234567890"
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
from waldur_api_client.client import AuthenticatedClient
from waldur_api_client.models.user_role_delete_request import UserRoleDeleteRequest # (1)
from waldur_api_client.api.openportal_unmanaged_projects import openportal_unmanaged_projects_delete_user # (2)

client = AuthenticatedClient(
    base_url="https://api.example.com", token="YOUR_API_TOKEN"
)

body_data = UserRoleDeleteRequest(
    role="string-value",
    user="a1b2c3d4-e5f6-7890-abcd-ef1234567890"
)
response = openportal_unmanaged_projects_delete_user.sync(
    uuid="a1b2c3d4-e5f6-7890-abcd-ef1234567890",
    client=client,
    body=body_data
)

print(response)
  1. Model Source: UserRoleDeleteRequest
  2. API Source: openportal_unmanaged_projects_delete_user
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
import { openportalUnmanagedProjectsDeleteUser } from 'waldur-js-client';

try {
  const response = await openportalUnmanagedProjectsDeleteUser({
  auth: "Token YOUR_API_TOKEN",
  path: {
    "uuid": "a1b2c3d4-e5f6-7890-abcd-ef1234567890"
  },
  body: {
    "role": "string-value",
    "user": "a1b2c3d4-e5f6-7890-abcd-ef1234567890"
  }
});
  console.log('Success:', response);
} catch (error) {
  console.error('Error:', error);
}
Name Type Required
uuid string (uuid)
Field Type Required
role string
user string (uuid)
expiration_time string (date-time)

200 - No response body


Update user

1
2
3
4
5
6
http \
  POST \
  https://api.example.com/api/openportal-unmanaged-projects/a1b2c3d4-e5f6-7890-abcd-ef1234567890/update_user/ \
  Authorization:"Token YOUR_API_TOKEN" \
  role="string-value" \
  user="a1b2c3d4-e5f6-7890-abcd-ef1234567890"
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
from waldur_api_client.client import AuthenticatedClient
from waldur_api_client.models.user_role_update_request import UserRoleUpdateRequest # (1)
from waldur_api_client.api.openportal_unmanaged_projects import openportal_unmanaged_projects_update_user # (2)

client = AuthenticatedClient(
    base_url="https://api.example.com", token="YOUR_API_TOKEN"
)

body_data = UserRoleUpdateRequest(
    role="string-value",
    user="a1b2c3d4-e5f6-7890-abcd-ef1234567890"
)
response = openportal_unmanaged_projects_update_user.sync(
    uuid="a1b2c3d4-e5f6-7890-abcd-ef1234567890",
    client=client,
    body=body_data
)

print(response)
  1. Model Source: UserRoleUpdateRequest
  2. API Source: openportal_unmanaged_projects_update_user
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
import { openportalUnmanagedProjectsUpdateUser } from 'waldur-js-client';

try {
  const response = await openportalUnmanagedProjectsUpdateUser({
  auth: "Token YOUR_API_TOKEN",
  path: {
    "uuid": "a1b2c3d4-e5f6-7890-abcd-ef1234567890"
  },
  body: {
    "role": "string-value",
    "user": "a1b2c3d4-e5f6-7890-abcd-ef1234567890"
  }
});
  console.log('Success:', response);
} catch (error) {
  console.error('Error:', error);
}
Name Type Required
uuid string (uuid)
Field Type Required
role string
user string (uuid)
expiration_time string (date-time)

200 -

Field Type
expiration_time string (date-time)

Other Actions

Get checklist with questions and existing answers

Get checklist with questions and existing answers.

1
2
3
4
http \
  GET \
  https://api.example.com/api/openportal-unmanaged-projects/a1b2c3d4-e5f6-7890-abcd-ef1234567890/checklist/ \
  Authorization:"Token YOUR_API_TOKEN"
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
from waldur_api_client.client import AuthenticatedClient
from waldur_api_client.api.openportal_unmanaged_projects import openportal_unmanaged_projects_checklist_retrieve # (1)

client = AuthenticatedClient(
    base_url="https://api.example.com", token="YOUR_API_TOKEN"
)
response = openportal_unmanaged_projects_checklist_retrieve.sync(
    uuid="a1b2c3d4-e5f6-7890-abcd-ef1234567890",
    client=client
)

print(response)
  1. API Source: openportal_unmanaged_projects_checklist_retrieve
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
import { openportalUnmanagedProjectsChecklistRetrieve } from 'waldur-js-client';

try {
  const response = await openportalUnmanagedProjectsChecklistRetrieve({
  auth: "Token YOUR_API_TOKEN",
  path: {
    "uuid": "a1b2c3d4-e5f6-7890-abcd-ef1234567890"
  }
});
  console.log('Success:', response);
} catch (error) {
  console.error('Error:', error);
}
Name Type Required
uuid string (uuid)

200 -

Field Type Description
checklist object (free-form)
completion object
completion.uuid string (uuid)
completion.is_completed boolean Whether all required questions have been answered
completion.completion_percentage number (double)
completion.unanswered_required_questions array of anys
completion.checklist_name string
completion.checklist_description string
completion.created string (date-time)
completion.modified string (date-time)
questions array of objects
questions.uuid string (uuid)
questions.description string
questions.user_guidance string
questions.question_type any Type of question and expected answer format
questions.required boolean
questions.order integer
questions.existing_answer object (free-form)
questions.question_options array of anys
questions.min_value string (decimal) Minimum value allowed for NUMBER type questions
questions.max_value string (decimal) Maximum value allowed for NUMBER type questions
questions.allowed_file_types any List of allowed file extensions (e.g., ['.pdf', '.doc', '.docx']). If empty, all file types are allowed.
questions.allowed_mime_types any List of allowed MIME types (e.g., ['application/pdf', 'application/msword']). If empty, MIME type validation is not enforced. When both extensions and MIME types are specified, files must match both criteria for security.
questions.max_file_size_mb integer Maximum file size in megabytes. If not set, no size limit is enforced.
questions.max_files_count integer Maximum number of files allowed for MULTIPLE_FILES type questions. If not set, no count limit is enforced.

400 -


404 -


Get checklist template for creating new objects

Get checklist template for creating new objects.

1
2
3
4
5
http \
  GET \
  https://api.example.com/api/openportal-unmanaged-projects/checklist-template/ \
  Authorization:"Token YOUR_API_TOKEN" \
  parent_uuid=="a1b2c3d4-e5f6-7890-abcd-ef1234567890"
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
from waldur_api_client.client import AuthenticatedClient
from waldur_api_client.api.openportal_unmanaged_projects import openportal_unmanaged_projects_checklist_template_retrieve # (1)

client = AuthenticatedClient(
    base_url="https://api.example.com", token="YOUR_API_TOKEN"
)
response = openportal_unmanaged_projects_checklist_template_retrieve.sync(
    client=client,
    parent_uuid="a1b2c3d4-e5f6-7890-abcd-ef1234567890"
)

print(response)
  1. API Source: openportal_unmanaged_projects_checklist_template_retrieve
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
import { openportalUnmanagedProjectsChecklistTemplateRetrieve } from 'waldur-js-client';

try {
  const response = await openportalUnmanagedProjectsChecklistTemplateRetrieve({
  auth: "Token YOUR_API_TOKEN",
  query: {
    "parent_uuid": "a1b2c3d4-e5f6-7890-abcd-ef1234567890"
  }
});
  console.log('Success:', response);
} catch (error) {
  console.error('Error:', error);
}
Name Type Required Description
parent_uuid string (uuid) UUID of the parent object (e.g., customer UUID for new projects)

200 -

Field Type Description
checklist object (free-form)
questions array of objects
questions.uuid string (uuid)
questions.required boolean
questions.description string
questions.user_guidance string Additional guidance text visible to users when answering and reviewing
questions.question_options array of objects
questions.question_options.uuid string (uuid)
questions.question_options.label string
questions.question_options.order integer
questions.question_type any Type of question and expected answer format
questions.order integer
questions.min_value string (decimal) Minimum value allowed for NUMBER type questions
questions.max_value string (decimal) Maximum value allowed for NUMBER type questions
questions.allowed_file_types any List of allowed file extensions (e.g., ['.pdf', '.doc', '.docx']). If empty, all file types are allowed.
questions.allowed_mime_types any List of allowed MIME types (e.g., ['application/pdf', 'application/msword']). If empty, MIME type validation is not enforced. When both extensions and MIME types are specified, files must match both criteria for security.
questions.max_file_size_mb integer Maximum file size in megabytes. If not set, no size limit is enforced.
questions.max_files_count integer Maximum number of files allowed for MULTIPLE_FILES type questions. If not set, no count limit is enforced.
questions.operator any
questions.review_answer_value any Answer value that trigger review.
questions.always_requires_review boolean This question always requires review regardless of answer
questions.guidance_answer_value any Answer value that triggers display of user guidance.
questions.guidance_operator any Operator to use when comparing answer with guidance_answer_value
questions.always_show_guidance boolean Show user guidance always, regardless of answer. If False, guidance is conditional on answer matching guidance_answer_value with guidance_operator
questions.dependency_logic_operator any Defines how multiple dependencies are evaluated. AND: All dependencies must be satisfied. OR: At least one dependency must be satisfied.
initial_visible_questions array of objects
initial_visible_questions.uuid string (uuid)
initial_visible_questions.required boolean
initial_visible_questions.description string
initial_visible_questions.user_guidance string Additional guidance text visible to users when answering and reviewing
initial_visible_questions.question_options array of objects
initial_visible_questions.question_options.uuid string (uuid)
initial_visible_questions.question_options.label string
initial_visible_questions.question_options.order integer
initial_visible_questions.question_type any Type of question and expected answer format
initial_visible_questions.order integer
initial_visible_questions.min_value string (decimal) Minimum value allowed for NUMBER type questions
initial_visible_questions.max_value string (decimal) Maximum value allowed for NUMBER type questions
initial_visible_questions.allowed_file_types any List of allowed file extensions (e.g., ['.pdf', '.doc', '.docx']). If empty, all file types are allowed.
initial_visible_questions.allowed_mime_types any List of allowed MIME types (e.g., ['application/pdf', 'application/msword']). If empty, MIME type validation is not enforced. When both extensions and MIME types are specified, files must match both criteria for security.
initial_visible_questions.max_file_size_mb integer Maximum file size in megabytes. If not set, no size limit is enforced.
initial_visible_questions.max_files_count integer Maximum number of files allowed for MULTIPLE_FILES type questions. If not set, no count limit is enforced.
initial_visible_questions.operator any
initial_visible_questions.review_answer_value any Answer value that trigger review.
initial_visible_questions.always_requires_review boolean This question always requires review regardless of answer
initial_visible_questions.guidance_answer_value any Answer value that triggers display of user guidance.
initial_visible_questions.guidance_operator any Operator to use when comparing answer with guidance_answer_value
initial_visible_questions.always_show_guidance boolean Show user guidance always, regardless of answer. If False, guidance is conditional on answer matching guidance_answer_value with guidance_operator
initial_visible_questions.dependency_logic_operator any Defines how multiple dependencies are evaluated. AND: All dependencies must be satisfied. OR: At least one dependency must be satisfied.

400 -


404 -


Get checklist completion status

Get checklist completion status.

1
2
3
4
http \
  GET \
  https://api.example.com/api/openportal-unmanaged-projects/a1b2c3d4-e5f6-7890-abcd-ef1234567890/completion_status/ \
  Authorization:"Token YOUR_API_TOKEN"
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
from waldur_api_client.client import AuthenticatedClient
from waldur_api_client.api.openportal_unmanaged_projects import openportal_unmanaged_projects_completion_status_retrieve # (1)

client = AuthenticatedClient(
    base_url="https://api.example.com", token="YOUR_API_TOKEN"
)
response = openportal_unmanaged_projects_completion_status_retrieve.sync(
    uuid="a1b2c3d4-e5f6-7890-abcd-ef1234567890",
    client=client
)

print(response)
  1. API Source: openportal_unmanaged_projects_completion_status_retrieve
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
import { openportalUnmanagedProjectsCompletionStatusRetrieve } from 'waldur-js-client';

try {
  const response = await openportalUnmanagedProjectsCompletionStatusRetrieve({
  auth: "Token YOUR_API_TOKEN",
  path: {
    "uuid": "a1b2c3d4-e5f6-7890-abcd-ef1234567890"
  }
});
  console.log('Success:', response);
} catch (error) {
  console.error('Error:', error);
}
Name Type Required
uuid string (uuid)

200 -

Field Type Description
uuid string (uuid)
is_completed boolean Whether all required questions have been answered
completion_percentage number (double)
unanswered_required_questions array of anys
checklist_name string
checklist_description string
created string (date-time)
modified string (date-time)

400 -


404 -


Get project resource usage statistics

Provides statistics about the resource usage (e.g., CPU, RAM, storage) for all resources within a project. Can be filtered to show usage for the current month only.

1
2
3
4
http \
  GET \
  https://api.example.com/api/openportal-unmanaged-projects/a1b2c3d4-e5f6-7890-abcd-ef1234567890/stats/ \
  Authorization:"Token YOUR_API_TOKEN"
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
from waldur_api_client.client import AuthenticatedClient
from waldur_api_client.api.openportal_unmanaged_projects import openportal_unmanaged_projects_stats_retrieve # (1)

client = AuthenticatedClient(
    base_url="https://api.example.com", token="YOUR_API_TOKEN"
)
response = openportal_unmanaged_projects_stats_retrieve.sync(
    uuid="a1b2c3d4-e5f6-7890-abcd-ef1234567890",
    client=client
)

print(response)
  1. API Source: openportal_unmanaged_projects_stats_retrieve
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
import { openportalUnmanagedProjectsStatsRetrieve } from 'waldur-js-client';

try {
  const response = await openportalUnmanagedProjectsStatsRetrieve({
  auth: "Token YOUR_API_TOKEN",
  path: {
    "uuid": "a1b2c3d4-e5f6-7890-abcd-ef1234567890"
  }
});
  console.log('Success:', response);
} catch (error) {
  console.error('Error:', error);
}
Name Type Required
uuid string (uuid)
Name Type Description
for_current_month boolean If true, returns usage data for the current month only. Otherwise, returns total usage.

200 -

Field Type
components array of objects
components.type string
components.name string
components.description string
components.measured_unit string
components.billing_type string
components.usage integer
components.limit_usage integer
components.limit integer
components.offering_name string
components.offering_uuid string (uuid)

Move project to another customer

Moves a project and its associated resources to a different customer. This is a staff-only action. You can choose whether to preserve existing project permissions for users.

1
2
3
4
5
6
http \
  POST \
  https://api.example.com/api/openportal-unmanaged-projects/a1b2c3d4-e5f6-7890-abcd-ef1234567890/move_project/ \
  Authorization:"Token YOUR_API_TOKEN" \
  customer="https://api.example.com/api/customer/a1b2c3d4-e5f6-7890-abcd-ef1234567890/" \
  preserve_permissions=true
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
from waldur_api_client.client import AuthenticatedClient
from waldur_api_client.models.move_project_request import MoveProjectRequest # (1)
from waldur_api_client.api.openportal_unmanaged_projects import openportal_unmanaged_projects_move_project # (2)

client = AuthenticatedClient(
    base_url="https://api.example.com", token="YOUR_API_TOKEN"
)

body_data = MoveProjectRequest(
    customer="https://api.example.com/api/customer/a1b2c3d4-e5f6-7890-abcd-ef1234567890/",
    preserve_permissions=true
)
response = openportal_unmanaged_projects_move_project.sync(
    uuid="a1b2c3d4-e5f6-7890-abcd-ef1234567890",
    client=client,
    body=body_data
)

print(response)
  1. Model Source: MoveProjectRequest
  2. API Source: openportal_unmanaged_projects_move_project
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
import { openportalUnmanagedProjectsMoveProject } from 'waldur-js-client';

try {
  const response = await openportalUnmanagedProjectsMoveProject({
  auth: "Token YOUR_API_TOKEN",
  path: {
    "uuid": "a1b2c3d4-e5f6-7890-abcd-ef1234567890"
  },
  body: {
    "customer": "https://api.example.com/api/customer/a1b2c3d4-e5f6-7890-abcd-ef1234567890/",
    "preserve_permissions": true
  }
});
  console.log('Success:', response);
} catch (error) {
  console.error('Error:', error);
}
Name Type Required
uuid string (uuid)
Field Type Required
customer string (uri)
preserve_permissions boolean

200 -

Field Type Description
url string (uri)
uuid string (uuid)
name string
slug string
customer string (uri)
customer_uuid string (uuid)
customer_name string
customer_slug string
customer_native_name string
customer_abbreviation string
description string
customer_display_billing_info_in_projects boolean
created string (date-time)
type string (uri)
type_name string
type_uuid string (uuid)
backend_id string
start_date string (date)
end_date string (date)
end_date_requested_by string (uri)
oecd_fos_2007_code any
oecd_fos_2007_label string
is_industry boolean
image string (uri)
resources_count integer
max_service_accounts integer Maximum number of service accounts allowed
kind any
is_removed boolean
termination_metadata any
staff_notes string
grace_period_days integer Number of extra days after project end date before resources are terminated. Overrides customer-level setting.
project_credit number (double)
marketplace_resource_count object (free-form)
billing_price_estimate any

400 -

Field Type Description
non_field_errors array of strings

Recover a soft-deleted project

Recovers a soft-deleted (terminated) project, making it active again. Provides options to restore previous team members automatically (staff-only) or send them new invitations.

1
2
3
4
http \
  POST \
  https://api.example.com/api/openportal-unmanaged-projects/a1b2c3d4-e5f6-7890-abcd-ef1234567890/recover/ \
  Authorization:"Token YOUR_API_TOKEN"
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
from waldur_api_client.client import AuthenticatedClient
from waldur_api_client.models.project_recovery_request import ProjectRecoveryRequest # (1)
from waldur_api_client.api.openportal_unmanaged_projects import openportal_unmanaged_projects_recover # (2)

client = AuthenticatedClient(
    base_url="https://api.example.com", token="YOUR_API_TOKEN"
)

body_data = ProjectRecoveryRequest()
response = openportal_unmanaged_projects_recover.sync(
    uuid="a1b2c3d4-e5f6-7890-abcd-ef1234567890",
    client=client,
    body=body_data
)

print(response)
  1. Model Source: ProjectRecoveryRequest
  2. API Source: openportal_unmanaged_projects_recover
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
import { openportalUnmanagedProjectsRecover } from 'waldur-js-client';

try {
  const response = await openportalUnmanagedProjectsRecover({
  auth: "Token YOUR_API_TOKEN",
  path: {
    "uuid": "a1b2c3d4-e5f6-7890-abcd-ef1234567890"
  }
});
  console.log('Success:', response);
} catch (error) {
  console.error('Error:', error);
}
Name Type Required
uuid string (uuid)
Field Type Required Description
restore_team_members boolean Whether to automatically restore team members who had access before project deletion (staff only)
Constraints: default: False
send_invitations_to_previous_members boolean Whether to send invitations to users who had access before project deletion
Constraints: default: False
end_date string (date) End date for the recovered project

200 -

Field Type Description
url string (uri)
uuid string (uuid)
name string
slug string
customer string (uri)
customer_uuid string (uuid)
customer_name string
customer_slug string
customer_native_name string
customer_abbreviation string
description string
customer_display_billing_info_in_projects boolean
created string (date-time)
type string (uri)
type_name string
type_uuid string (uuid)
backend_id string
start_date string (date)
end_date string (date)
end_date_requested_by string (uri)
oecd_fos_2007_code any
oecd_fos_2007_label string
is_industry boolean
image string (uri)
resources_count integer
max_service_accounts integer Maximum number of service accounts allowed
kind any
is_removed boolean
termination_metadata any
staff_notes string
grace_period_days integer Number of extra days after project end date before resources are terminated. Overrides customer-level setting.
project_credit number (double)
marketplace_resource_count object (free-form)
billing_price_estimate any

Submit checklist answers

Submit checklist answers.

1
2
3
4
echo '[{"question_uuid": "a1b2c3d4-e5f6-7890-abcd-ef1234567890", "answer_data": null}]' | http \
  POST \
  https://api.example.com/api/openportal-unmanaged-projects/a1b2c3d4-e5f6-7890-abcd-ef1234567890/submit_answers/ \
  Authorization:"Token YOUR_API_TOKEN"
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
from waldur_api_client.client import AuthenticatedClient
from waldur_api_client.api.openportal_unmanaged_projects import openportal_unmanaged_projects_submit_answers # (1)

client = AuthenticatedClient(
    base_url="https://api.example.com", token="YOUR_API_TOKEN"
)
response = openportal_unmanaged_projects_submit_answers.sync(
    uuid="a1b2c3d4-e5f6-7890-abcd-ef1234567890",
    client=client
)

print(response)
  1. API Source: openportal_unmanaged_projects_submit_answers
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
import { openportalUnmanagedProjectsSubmitAnswers } from 'waldur-js-client';

try {
  const response = await openportalUnmanagedProjectsSubmitAnswers({
  auth: "Token YOUR_API_TOKEN",
  path: {
    "uuid": "a1b2c3d4-e5f6-7890-abcd-ef1234567890"
  },
  body: [{"question_uuid": "a1b2c3d4-e5f6-7890-abcd-ef1234567890", "answer_data": null}]
});
  console.log('Success:', response);
} catch (error) {
  console.error('Error:', error);
}
Name Type Required
uuid string (uuid)

The request body is an array of objects, where each object has the following structure:

Field Type Required
question_uuid string (uuid)
answer_data any

200 -

Field Type Description
detail string
completion object
completion.uuid string (uuid)
completion.is_completed boolean Whether all required questions have been answered
completion.completion_percentage number (double)
completion.unanswered_required_questions array of anys
completion.checklist_name string
completion.checklist_description string
completion.created string (date-time)
completion.modified string (date-time)

400 -


404 -