Skip to content

Proposal Proposals

Operations Summary

Method Endpoint Description
Core CRUD
GET /api/proposal-proposals/ List Proposal Proposals
GET /api/proposal-proposals/{uuid}/ Retrieve
POST /api/proposal-proposals/ Create
POST /api/proposal-proposals/{uuid}/update_project_details/ Update project details of a proposal
DELETE /api/proposal-proposals/{uuid}/ Delete
Permissions & Users
GET /api/proposal-proposals/{uuid}/list_users/ List users and their roles in a scope
POST /api/proposal-proposals/{uuid}/add_user/ Grant a role to a user
POST /api/proposal-proposals/{uuid}/delete_user/ Revoke a role from a user
POST /api/proposal-proposals/{uuid}/update_user/ Update a user's role expiration
Other Actions
GET /api/proposal-proposals/{uuid}/checklist/ Get checklist with questions and existing answers
GET /api/proposal-proposals/{uuid}/checklist_review/ Checklist review
GET /api/proposal-proposals/checklist-template/ Get checklist template for creating new objects
GET /api/proposal-proposals/{uuid}/completion_review_status/ Get checklist completion status with review triggers (reviewers only)
GET /api/proposal-proposals/{uuid}/completion_status/ Get checklist completion status
GET /api/proposal-proposals/{uuid}/resources/ List resources for a proposal
GET /api/proposal-proposals/{uuid}/resources/{obj_uuid}/ Retrieve
GET /api/proposal-proposals/{uuid}/step-checklist-responses/ Step checklist responses
GET /api/proposal-proposals/{uuid}/step-checklist/ Get a workflow step's checklist with questions and answers
GET /api/proposal-proposals/{uuid}/workflow_states/ List all workflow step instances for this proposal
POST /api/proposal-proposals/{uuid}/advance_workflow_step/ Manually advance a workflow that is awaiting call-manager confirmation
POST /api/proposal-proposals/{uuid}/attach_document/ Attach document to proposal
POST /api/proposal-proposals/{uuid}/complete_workflow_step/ Complete the current workflow step with an outcome
POST /api/proposal-proposals/{uuid}/detach_documents/ Detach documents from proposal
POST /api/proposal-proposals/{uuid}/reject_workflow_step/ Reject the proposal at the current workflow step
POST /api/proposal-proposals/{uuid}/resources/{obj_uuid}/purchase_order/ Upload or replace the purchase order of a requested resource
POST /api/proposal-proposals/{uuid}/resources/ Create resource for a proposal
POST /api/proposal-proposals/{uuid}/submit/ Submit a proposal
POST /api/proposal-proposals/{uuid}/submit_answers/ Submit checklist answers
POST /api/proposal-proposals/{uuid}/submit-step-checklist-answers/ Submit answers to a workflow step's checklist
PUT /api/proposal-proposals/{uuid}/resources/{obj_uuid}/ Update
PATCH /api/proposal-proposals/{uuid}/resources/{obj_uuid}/ Partial Update
DELETE /api/proposal-proposals/{uuid}/resources/{obj_uuid}/purchase_order/ Remove the purchase order of a requested resource
DELETE /api/proposal-proposals/{uuid}/resources/{obj_uuid}/ Delete

Core CRUD

List Proposal Proposals

1
2
3
4
http \
  GET \
  https://api.example.com/api/proposal-proposals/ \
  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.models.proposal_o_enum import ProposalOEnum # (1)
from waldur_api_client.models.proposal_states import ProposalStates # (2)
from waldur_api_client.api.proposal_proposals import proposal_proposals_list # (3)

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

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

try {
  const response = await proposalProposalsList({
  auth: "Token YOUR_API_TOKEN"
});
  console.log('Success:', response);
} catch (error) {
  console.error('Error:', error);
}
Name Type Description
call_uuid string (uuid)
created_by_uuid string (uuid)
my_proposals boolean
name string
o array Ordering

organization_uuid string (uuid)
page integer A page number within the paginated result set.
page_size integer Number of results to return per page.
round string (uuid)
round_uuid string (uuid)
slug string Slug
state array

200 -

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

Field Type Description
uuid string (uuid)
url string (uri)
slug string
name string
description string
project_name string
project_summary string
project_is_confidential boolean
project_has_civilian_purpose boolean
supporting_documentation array of objects
supporting_documentation.uuid string (uuid)
supporting_documentation.file string (uri) Upload supporting documentation in PDF format.
supporting_documentation.file_name string
supporting_documentation.file_size integer
supporting_documentation.created string (date-time)
state any
approved_by string (uri)
created_by string (uri)
created_by_name string
created_by_uuid string (uuid)
applicant_username string Required. 128 characters or fewer. Lowercase letters, numbers and @/./+/-/_ characters
applicant_full_name string
applicant_first_name string
applicant_last_name string
applicant_email string (email)
applicant_registration_method string Indicates what registration method was used.
applicant_phone_number string
applicant_organization string
applicant_organization_country string
applicant_organization_type string SCHAC URN (e.g., urn:schac:homeOrganizationType:int:university)
applicant_organization_registry_code string Company registration code of the user's organization, if known
applicant_organization_vat_code string VAT code of the user's organization
applicant_organization_address string Postal address of the user's organization
applicant_job_title string
applicant_affiliations array of strings
applicant_gender any User's gender (male, female, or unknown)
applicant_personal_title string Honorific title (Mr, Ms, Dr, Prof, etc.)
applicant_place_of_birth string
applicant_address string
applicant_country_of_residence string
applicant_nationality string Primary citizenship (ISO 3166-1 alpha-2 code)
applicant_nationalities array of strings
applicant_eduperson_assurance array of strings
applicant_identity_source string Indicates what identity provider was used.
applicant_civil_number string
applicant_birth_date string (date)
applicant_active_isds array of strings
duration_in_days integer Duration in days after provisioning of resources.
project string (uri)
round any
call_uuid string (uuid)
call_name string
call_managing_organisation_uuid string (uuid)
oecd_fos_2007_code any
oecd_fos_2007_label string
science_sub_domain string (uuid)
science_sub_domain_name string
science_domain_uuid string (uuid)
science_domain_name string
allocation_comment string
created string (date-time)
compliance_status any
can_submit any
awaiting_manual_advance boolean
workflow_step any Current active workflow step for this proposal.

Retrieve

1
2
3
4
http \
  GET \
  https://api.example.com/api/proposal-proposals/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.proposal_proposals import proposal_proposals_retrieve # (1)

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

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

try {
  const response = await proposalProposalsRetrieve({
  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)
url string (uri)
slug string
name string
description string
project_name string
project_summary string
project_is_confidential boolean
project_has_civilian_purpose boolean
supporting_documentation array of objects
supporting_documentation.uuid string (uuid)
supporting_documentation.file string (uri) Upload supporting documentation in PDF format.
supporting_documentation.file_name string
supporting_documentation.file_size integer
supporting_documentation.created string (date-time)
state any
approved_by string (uri)
created_by string (uri)
created_by_name string
created_by_uuid string (uuid)
applicant_username string Required. 128 characters or fewer. Lowercase letters, numbers and @/./+/-/_ characters
applicant_full_name string
applicant_first_name string
applicant_last_name string
applicant_email string (email)
applicant_registration_method string Indicates what registration method was used.
applicant_phone_number string
applicant_organization string
applicant_organization_country string
applicant_organization_type string SCHAC URN (e.g., urn:schac:homeOrganizationType:int:university)
applicant_organization_registry_code string Company registration code of the user's organization, if known
applicant_organization_vat_code string VAT code of the user's organization
applicant_organization_address string Postal address of the user's organization
applicant_job_title string
applicant_affiliations array of strings
applicant_gender any User's gender (male, female, or unknown)
applicant_personal_title string Honorific title (Mr, Ms, Dr, Prof, etc.)
applicant_place_of_birth string
applicant_address string
applicant_country_of_residence string
applicant_nationality string Primary citizenship (ISO 3166-1 alpha-2 code)
applicant_nationalities array of strings
applicant_eduperson_assurance array of strings
applicant_identity_source string Indicates what identity provider was used.
applicant_civil_number string
applicant_birth_date string (date)
applicant_active_isds array of strings
duration_in_days integer Duration in days after provisioning of resources.
project string (uri)
round any
call_uuid string (uuid)
call_name string
call_managing_organisation_uuid string (uuid)
oecd_fos_2007_code any
oecd_fos_2007_label string
science_sub_domain string (uuid)
science_sub_domain_name string
science_domain_uuid string (uuid)
science_domain_name string
allocation_comment string
created string (date-time)
compliance_status any
can_submit any
awaiting_manual_advance boolean
workflow_step any Current active workflow step for this proposal.

Create

1
2
3
4
5
6
http \
  POST \
  https://api.example.com/api/proposal-proposals/ \
  Authorization:"Token YOUR_API_TOKEN" \
  name="my-awesome-proposal-proposal" \
  round_uuid="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.proposal_request import ProposalRequest # (1)
from waldur_api_client.api.proposal_proposals import proposal_proposals_create # (2)

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

body_data = ProposalRequest(
    name="my-awesome-proposal-proposal",
    round_uuid="a1b2c3d4-e5f6-7890-abcd-ef1234567890"
)
response = proposal_proposals_create.sync(
    client=client,
    body=body_data
)

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

try {
  const response = await proposalProposalsCreate({
  auth: "Token YOUR_API_TOKEN",
  body: {
    "name": "my-awesome-proposal-proposal",
    "round_uuid": "a1b2c3d4-e5f6-7890-abcd-ef1234567890"
  }
});
  console.log('Success:', response);
} catch (error) {
  console.error('Error:', error);
}
Field Type Required Description
name string
description string
project_summary string
project_is_confidential boolean
project_has_civilian_purpose boolean
duration_in_days integer Duration in days after provisioning of resources.
round_uuid string (uuid)
Constraints: write-only
oecd_fos_2007_code any
science_sub_domain string (uuid)

201 -

Field Type Description
uuid string (uuid)
url string (uri)
slug string
name string
description string
project_name string
project_summary string
project_is_confidential boolean
project_has_civilian_purpose boolean
supporting_documentation array of objects
supporting_documentation.uuid string (uuid)
supporting_documentation.file string (uri) Upload supporting documentation in PDF format.
supporting_documentation.file_name string
supporting_documentation.file_size integer
supporting_documentation.created string (date-time)
state any
approved_by string (uri)
created_by string (uri)
created_by_name string
created_by_uuid string (uuid)
applicant_username string Required. 128 characters or fewer. Lowercase letters, numbers and @/./+/-/_ characters
applicant_full_name string
applicant_first_name string
applicant_last_name string
applicant_email string (email)
applicant_registration_method string Indicates what registration method was used.
applicant_phone_number string
applicant_organization string
applicant_organization_country string
applicant_organization_type string SCHAC URN (e.g., urn:schac:homeOrganizationType:int:university)
applicant_organization_registry_code string Company registration code of the user's organization, if known
applicant_organization_vat_code string VAT code of the user's organization
applicant_organization_address string Postal address of the user's organization
applicant_job_title string
applicant_affiliations array of strings
applicant_gender any User's gender (male, female, or unknown)
applicant_personal_title string Honorific title (Mr, Ms, Dr, Prof, etc.)
applicant_place_of_birth string
applicant_address string
applicant_country_of_residence string
applicant_nationality string Primary citizenship (ISO 3166-1 alpha-2 code)
applicant_nationalities array of strings
applicant_eduperson_assurance array of strings
applicant_identity_source string Indicates what identity provider was used.
applicant_civil_number string
applicant_birth_date string (date)
applicant_active_isds array of strings
duration_in_days integer Duration in days after provisioning of resources.
project string (uri)
round any
call_uuid string (uuid)
call_name string
call_managing_organisation_uuid string (uuid)
oecd_fos_2007_code any
oecd_fos_2007_label string
science_sub_domain string (uuid)
science_sub_domain_name string
science_domain_uuid string (uuid)
science_domain_name string
allocation_comment string
created string (date-time)
compliance_status any
can_submit any
awaiting_manual_advance boolean
workflow_step any Current active workflow step for this proposal.

Update project details of a proposal

Update project details of a proposal.

1
2
3
4
5
http \
  POST \
  https://api.example.com/api/proposal-proposals/a1b2c3d4-e5f6-7890-abcd-ef1234567890/update_project_details/ \
  Authorization:"Token YOUR_API_TOKEN" \
  name="my-awesome-proposal-proposal"
 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.proposal_update_project_details_request import ProposalUpdateProjectDetailsRequest # (1)
from waldur_api_client.api.proposal_proposals import proposal_proposals_update_project_details # (2)

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

body_data = ProposalUpdateProjectDetailsRequest(
    name="my-awesome-proposal-proposal"
)
response = proposal_proposals_update_project_details.sync(
    uuid="a1b2c3d4-e5f6-7890-abcd-ef1234567890",
    client=client,
    body=body_data
)

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

try {
  const response = await proposalProposalsUpdateProjectDetails({
  auth: "Token YOUR_API_TOKEN",
  path: {
    "uuid": "a1b2c3d4-e5f6-7890-abcd-ef1234567890"
  },
  body: {
    "name": "my-awesome-proposal-proposal"
  }
});
  console.log('Success:', response);
} catch (error) {
  console.error('Error:', error);
}
Name Type Required
uuid string (uuid)
Field Type Required Description
name string
description string
project_summary string
project_is_confidential boolean
project_has_civilian_purpose boolean
duration_in_days integer Duration in days after provisioning of resources.
oecd_fos_2007_code any

200 - No response body


Delete

1
2
3
4
http \
  DELETE \
  https://api.example.com/api/proposal-proposals/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.proposal_proposals import proposal_proposals_destroy # (1)

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

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

try {
  const response = await proposalProposalsDestroy({
  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 and their roles in a scope

Retrieves a list of users who have a role within a specific scope (e.g., a project or an organization). The list can be filtered by user details or role.

1
2
3
4
http \
  GET \
  https://api.example.com/api/proposal-proposals/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
14
15
from waldur_api_client.client import AuthenticatedClient
from waldur_api_client.models.user_role_details_field_enum import UserRoleDetailsFieldEnum # (1)
from waldur_api_client.models.user_role_details_o_enum import UserRoleDetailsOEnum # (2)
from waldur_api_client.api.proposal_proposals import proposal_proposals_list_users_list # (3)

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

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

try {
  const response = await proposalProposalsListUsersList({
  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 array Role UUID or name. Repeat to filter by several roles.
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)

Grant a role to a user

Assigns a specific role to a user within the current scope. An optional expiration time for the role can be set.

1
2
3
4
5
6
http \
  POST \
  https://api.example.com/api/proposal-proposals/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.proposal_proposals import proposal_proposals_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 = proposal_proposals_add_user.sync(
    uuid="a1b2c3d4-e5f6-7890-abcd-ef1234567890",
    client=client,
    body=body_data
)

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

try {
  const response = await proposalProposalsAddUser({
  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 - Validation error, for example when trying to add a user to a terminated project.


Revoke a role from a user

Removes a specific role from a user within the current scope. This effectively revokes their permissions associated with that role.

1
2
3
4
5
6
http \
  POST \
  https://api.example.com/api/proposal-proposals/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.proposal_proposals import proposal_proposals_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 = proposal_proposals_delete_user.sync(
    uuid="a1b2c3d4-e5f6-7890-abcd-ef1234567890",
    client=client,
    body=body_data
)

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

try {
  const response = await proposalProposalsDeleteUser({
  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 - Role revoked successfully.


Update a user's role expiration

Updates the expiration time for a user's existing role in the current scope. This is useful for extending or shortening the duration of a permission. To make a role permanent, set expiration_time to null.

1
2
3
4
5
6
http \
  POST \
  https://api.example.com/api/proposal-proposals/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.proposal_proposals import proposal_proposals_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 = proposal_proposals_update_user.sync(
    uuid="a1b2c3d4-e5f6-7890-abcd-ef1234567890",
    client=client,
    body=body_data
)

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

try {
  const response = await proposalProposalsUpdateUser({
  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/proposal-proposals/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.proposal_proposals import proposal_proposals_checklist_retrieve # (1)

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

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

try {
  const response = await proposalProposalsChecklistRetrieve({
  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
include_all boolean If true, returns all questions including hidden ones (for dynamic form visibility). Default: false.

200 -

Field Type Description
checklist any
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 any
questions.question_options array of anys
questions.min_value string (decimal) Minimum value allowed for NUMBER, YEAR, and RATING type questions
questions.max_value string (decimal) Maximum value allowed for NUMBER, YEAR, and RATING type questions
questions.allowed_file_types object (free-form) List of allowed file extensions (e.g., ['.pdf', '.doc', '.docx']). If empty, all file types are allowed.
questions.allowed_mime_types object (free-form) 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.likert_scale_length any Number of points on the Likert scale (3, 5, or 7). Required for LIKERT type questions.
questions.likert_low_label string Label for the lowest point on the Likert scale (e.g. 'Strongly disagree'). Optional.
questions.likert_high_label string Label for the highest point on the Likert scale (e.g. 'Strongly agree'). Optional.
questions.likert_allow_na boolean Allow respondents to choose 'N/A' as an answer for LIKERT type questions.
questions.rich_text_char_limit integer Maximum number of characters allowed in RICH_TEXT type answers. If not set, no limit is enforced.
questions.rich_text_toolbar_level any Toolbar level for the rich text editor: 'minimal', 'standard', or 'extended'.
questions.dependencies_info any

400 -


404 -


Checklist review

Get checklist with questions and existing answers including review logic (reviewers only).

1
2
3
4
http \
  GET \
  https://api.example.com/api/proposal-proposals/a1b2c3d4-e5f6-7890-abcd-ef1234567890/checklist_review/ \
  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.proposal_proposals import proposal_proposals_checklist_review_retrieve # (1)

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

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

try {
  const response = await proposalProposalsChecklistReviewRetrieve({
  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 any
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)
completion.requires_review boolean Whether any answers triggered review requirements
completion.reviewed_by integer User who reviewed the checklist completion
completion.reviewed_by_name string
completion.reviewed_at string (date-time)
completion.review_notes string Notes from the reviewer
completion.review_trigger_summary array of anys
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 any
questions.question_options array of anys
questions.min_value string (decimal) Minimum value allowed for NUMBER, YEAR, and RATING type questions
questions.max_value string (decimal) Maximum value allowed for NUMBER, YEAR, and RATING type questions
questions.allowed_file_types object (free-form) List of allowed file extensions (e.g., ['.pdf', '.doc', '.docx']). If empty, all file types are allowed.
questions.allowed_mime_types object (free-form) 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.likert_scale_length any Number of points on the Likert scale (3, 5, or 7). Required for LIKERT type questions.
questions.likert_low_label string Label for the lowest point on the Likert scale (e.g. 'Strongly disagree'). Optional.
questions.likert_high_label string Label for the highest point on the Likert scale (e.g. 'Strongly agree'). Optional.
questions.likert_allow_na boolean Allow respondents to choose 'N/A' as an answer for LIKERT type questions.
questions.rich_text_char_limit integer Maximum number of characters allowed in RICH_TEXT type answers. If not set, no limit is enforced.
questions.rich_text_toolbar_level any Toolbar level for the rich text editor: 'minimal', 'standard', or 'extended'.
questions.dependencies_info any
questions.operator any
questions.review_answer_value any
questions.always_requires_review boolean This question always requires review regardless of answer

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/proposal-proposals/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.proposal_proposals import proposal_proposals_checklist_template_retrieve # (1)

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

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

try {
  const response = await proposalProposalsChecklistTemplateRetrieve({
  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 any
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, YEAR, and RATING type questions
questions.max_value string (decimal) Maximum value allowed for NUMBER, YEAR, and RATING type questions
questions.allowed_file_types array of strings
questions.allowed_mime_types array of strings
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.likert_scale_length any Number of points on the Likert scale (3, 5, or 7). Required for LIKERT type questions.
questions.likert_low_label string Label for the lowest point on the Likert scale (e.g. 'Strongly disagree'). Optional.
questions.likert_high_label string Label for the highest point on the Likert scale (e.g. 'Strongly agree'). Optional.
questions.likert_allow_na boolean Allow respondents to choose 'N/A' as an answer for LIKERT type questions.
questions.rich_text_char_limit integer Maximum number of characters allowed in RICH_TEXT type answers. If not set, no limit is enforced.
questions.rich_text_toolbar_level any Toolbar level for the rich text editor: 'minimal', 'standard', or 'extended'.
questions.operator any
questions.review_answer_value any
questions.always_requires_review boolean This question always requires review regardless of answer
questions.guidance_answer_value object (free-form) 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, YEAR, and RATING type questions
initial_visible_questions.max_value string (decimal) Maximum value allowed for NUMBER, YEAR, and RATING type questions
initial_visible_questions.allowed_file_types array of strings
initial_visible_questions.allowed_mime_types array of strings
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.likert_scale_length any Number of points on the Likert scale (3, 5, or 7). Required for LIKERT type questions.
initial_visible_questions.likert_low_label string Label for the lowest point on the Likert scale (e.g. 'Strongly disagree'). Optional.
initial_visible_questions.likert_high_label string Label for the highest point on the Likert scale (e.g. 'Strongly agree'). Optional.
initial_visible_questions.likert_allow_na boolean Allow respondents to choose 'N/A' as an answer for LIKERT type questions.
initial_visible_questions.rich_text_char_limit integer Maximum number of characters allowed in RICH_TEXT type answers. If not set, no limit is enforced.
initial_visible_questions.rich_text_toolbar_level any Toolbar level for the rich text editor: 'minimal', 'standard', or 'extended'.
initial_visible_questions.operator any
initial_visible_questions.review_answer_value any
initial_visible_questions.always_requires_review boolean This question always requires review regardless of answer
initial_visible_questions.guidance_answer_value object (free-form) 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 with review triggers (reviewers only)

Get checklist completion status with review triggers (reviewers only).

1
2
3
4
http \
  GET \
  https://api.example.com/api/proposal-proposals/a1b2c3d4-e5f6-7890-abcd-ef1234567890/completion_review_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.proposal_proposals import proposal_proposals_completion_review_status_retrieve # (1)

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

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

try {
  const response = await proposalProposalsCompletionReviewStatusRetrieve({
  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)
requires_review boolean Whether any answers triggered review requirements
reviewed_by integer User who reviewed the checklist completion
reviewed_by_name string
reviewed_at string (date-time)
review_notes string Notes from the reviewer
review_trigger_summary array of anys

400 -


404 -


Get checklist completion status

Get checklist completion status.

1
2
3
4
http \
  GET \
  https://api.example.com/api/proposal-proposals/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.proposal_proposals import proposal_proposals_completion_status_retrieve # (1)

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

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

try {
  const response = await proposalProposalsCompletionStatusRetrieve({
  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 -


List resources for a proposal

List resources for a proposal.

1
2
3
4
http \
  GET \
  https://api.example.com/api/proposal-proposals/a1b2c3d4-e5f6-7890-abcd-ef1234567890/resources/ \
  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.proposal_proposals import proposal_proposals_resources_list # (1)

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

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

try {
  const response = await proposalProposalsResourcesList({
  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
page integer A page number within the paginated result set.
page_size integer Number of results to return per page.

200 -

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

Field Type Description
uuid string (uuid)
url string
requested_offering any
resource string (uri)
resource_name string
call_resource_template string
call_resource_template_name string
attributes object (free-form)
limits object (free-form)
purchase_order_reference string
attachment string (uri)
purchase_order_required boolean
has_purchase_order boolean Either half satisfies the requirement. Some providers want the document, others only need the reference from the customer's finance system; demanding both would block the second group for no gain.
description string
created_by string (uri)
created_by_name string

Retrieve

1
2
3
4
http \
  GET \
  https://api.example.com/api/proposal-proposals/string-value/resources/a1b2c3d4-e5f6-7890-abcd-ef1234567890/ \
  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.proposal_proposals import proposal_proposals_resources_retrieve # (1)

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

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

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

200 -

Field Type Description
uuid string (uuid)
url string
requested_offering any
resource string (uri)
resource_name string
call_resource_template string
call_resource_template_name string
attributes object (free-form)
limits object (free-form)
purchase_order_reference string
attachment string (uri)
purchase_order_required boolean
has_purchase_order boolean Either half satisfies the requirement. Some providers want the document, others only need the reference from the customer's finance system; demanding both would block the second group for no gain.
description string
created_by string (uri)
created_by_name string

Step checklist responses

List a workflow step's checklist answers grouped by reviewer, for the threaded technical-assessment view. Each technical reviewer (offering manager) answers the same checklist; this returns every reviewer's decision and comment.

1
2
3
4
5
http \
  GET \
  https://api.example.com/api/proposal-proposals/a1b2c3d4-e5f6-7890-abcd-ef1234567890/step-checklist-responses/ \
  Authorization:"Token YOUR_API_TOKEN" \
  step=="string-value"
 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.proposal_o_enum import ProposalOEnum # (1)
from waldur_api_client.models.proposal_states import ProposalStates # (2)
from waldur_api_client.api.proposal_proposals import proposal_proposals_step_checklist_responses_list # (3)

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

for item in response:
    print(item)
  1. Model Source: ProposalOEnum
  2. Model Source: ProposalStates
  3. API Source: proposal_proposals_step_checklist_responses_list
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
import { proposalProposalsStepChecklistResponsesList } from 'waldur-js-client';

try {
  const response = await proposalProposalsStepChecklistResponsesList({
  auth: "Token YOUR_API_TOKEN",
  path: {
    "uuid": "a1b2c3d4-e5f6-7890-abcd-ef1234567890"
  },
  query: {
    "step": "string-value"
  }
});
  console.log('Success:', response);
} catch (error) {
  console.error('Error:', error);
}
Name Type Required
uuid string (uuid)
Name Type Required Description
call_uuid string (uuid)
created_by_uuid string (uuid)
my_proposals boolean
name string
o array Ordering

organization_uuid string (uuid)
page integer A page number within the paginated result set.
page_size integer Number of results to return per page.
round string (uuid)
round_uuid string (uuid)
slug string Slug
state array
step string Workflow step key (e.g. technical_assessment).

200 -

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

Field Type
user_uuid string (uuid)
user_full_name string
user_image string
submitted_at string (date-time)
answers array of objects
answers.question_uuid string (uuid)
answers.question_description string
answers.question_type string
answers.answer_data object (free-form)
answers.answer_display string

400 -


Get a workflow step's checklist with questions and answers

Get a workflow step's checklist with questions and answers.

1
2
3
4
5
http \
  GET \
  https://api.example.com/api/proposal-proposals/a1b2c3d4-e5f6-7890-abcd-ef1234567890/step-checklist/ \
  Authorization:"Token YOUR_API_TOKEN" \
  step=="string-value"
 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.proposal_proposals import proposal_proposals_step_checklist_retrieve # (1)

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

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

try {
  const response = await proposalProposalsStepChecklistRetrieve({
  auth: "Token YOUR_API_TOKEN",
  path: {
    "uuid": "a1b2c3d4-e5f6-7890-abcd-ef1234567890"
  },
  query: {
    "step": "string-value"
  }
});
  console.log('Success:', response);
} catch (error) {
  console.error('Error:', error);
}
Name Type Required
uuid string (uuid)
Name Type Required Description
include_all string Return all questions ignoring dynamic visibility.
step string Workflow step key (e.g. technical_assessment).

200 -

Field Type Description
checklist any
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 any
questions.question_options array of anys
questions.min_value string (decimal) Minimum value allowed for NUMBER, YEAR, and RATING type questions
questions.max_value string (decimal) Maximum value allowed for NUMBER, YEAR, and RATING type questions
questions.allowed_file_types object (free-form) List of allowed file extensions (e.g., ['.pdf', '.doc', '.docx']). If empty, all file types are allowed.
questions.allowed_mime_types object (free-form) 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.likert_scale_length any Number of points on the Likert scale (3, 5, or 7). Required for LIKERT type questions.
questions.likert_low_label string Label for the lowest point on the Likert scale (e.g. 'Strongly disagree'). Optional.
questions.likert_high_label string Label for the highest point on the Likert scale (e.g. 'Strongly agree'). Optional.
questions.likert_allow_na boolean Allow respondents to choose 'N/A' as an answer for LIKERT type questions.
questions.rich_text_char_limit integer Maximum number of characters allowed in RICH_TEXT type answers. If not set, no limit is enforced.
questions.rich_text_toolbar_level any Toolbar level for the rich text editor: 'minimal', 'standard', or 'extended'.
questions.dependencies_info any

400 -


List all workflow step instances for this proposal

List all workflow step instances for this proposal.

1
2
3
4
http \
  GET \
  https://api.example.com/api/proposal-proposals/a1b2c3d4-e5f6-7890-abcd-ef1234567890/workflow_states/ \
  Authorization:"Token YOUR_API_TOKEN"
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
from waldur_api_client.client import AuthenticatedClient
from waldur_api_client.models.proposal_o_enum import ProposalOEnum # (1)
from waldur_api_client.models.proposal_states import ProposalStates # (2)
from waldur_api_client.api.proposal_proposals import proposal_proposals_workflow_states_list # (3)

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

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

try {
  const response = await proposalProposalsWorkflowStatesList({
  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
call_uuid string (uuid)
created_by_uuid string (uuid)
my_proposals boolean
name string
o array Ordering

organization_uuid string (uuid)
page integer A page number within the paginated result set.
page_size integer Number of results to return per page.
round string (uuid)
round_uuid string (uuid)
slug string Slug
state array

200 -

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

Field Type Description
uuid string (uuid)
step any
step_name string
step_description string
responsible_role string
status any
outcome string Step-specific outcome (e.g., eligible, feasible, approved).
outcome_reason string Explanation for the outcome (e.g., rejection reason).
rejection_reason string
internal_notes string
started_at string (date-time) When this step became active.
completed_at string (date-time)
completed_by string (uuid)
deadline string (date-time) Computed from started_at + step duration_in_days.
applicant_visible boolean
duration_in_days integer
is_required boolean
checklist_status any

Manually advance a workflow that is awaiting call-manager confirmation

Manually advance a workflow that is awaiting call-manager confirmation.

1
2
3
4
http \
  POST \
  https://api.example.com/api/proposal-proposals/a1b2c3d4-e5f6-7890-abcd-ef1234567890/advance_workflow_step/ \
  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.proposal_proposals import proposal_proposals_advance_workflow_step # (1)

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

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

try {
  const response = await proposalProposalsAdvanceWorkflowStep({
  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
detail string
proposal_state string New proposal state when the workflow terminates.
next_step string Identifier of the step that just became active.

Attach document to proposal

Attach document to proposal.

1
2
3
4
http \
  POST \
  https://api.example.com/api/proposal-proposals/a1b2c3d4-e5f6-7890-abcd-ef1234567890/attach_document/ \
  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.proposal_documentation_request import ProposalDocumentationRequest # (1)
from waldur_api_client.api.proposal_proposals import proposal_proposals_attach_document # (2)

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

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

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

try {
  const response = await proposalProposalsAttachDocument({
  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
file string (binary) Upload supporting documentation in PDF format.

200 - No response body


Complete the current workflow step with an outcome

Complete the current workflow step with an outcome.

1
2
3
4
5
6
http \
  POST \
  https://api.example.com/api/proposal-proposals/a1b2c3d4-e5f6-7890-abcd-ef1234567890/complete_workflow_step/ \
  Authorization:"Token YOUR_API_TOKEN" \
  step_uuid="a1b2c3d4-e5f6-7890-abcd-ef1234567890" \
  outcome=null
 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.complete_workflow_step_request import CompleteWorkflowStepRequest # (1)
from waldur_api_client.api.proposal_proposals import proposal_proposals_complete_workflow_step # (2)

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

body_data = CompleteWorkflowStepRequest(
    step_uuid="a1b2c3d4-e5f6-7890-abcd-ef1234567890",
    outcome=null
)
response = proposal_proposals_complete_workflow_step.sync(
    uuid="a1b2c3d4-e5f6-7890-abcd-ef1234567890",
    client=client,
    body=body_data
)

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

try {
  const response = await proposalProposalsCompleteWorkflowStep({
  auth: "Token YOUR_API_TOKEN",
  path: {
    "uuid": "a1b2c3d4-e5f6-7890-abcd-ef1234567890"
  },
  body: {
    "step_uuid": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
    "outcome": null
  }
});
  console.log('Success:', response);
} catch (error) {
  console.error('Error:', error);
}
Name Type Required
uuid string (uuid)
Field Type Required Description
step_uuid string (uuid) UUID of the workflow step instance the client believes is active. Used to detect concurrent step transitions.
outcome any Step outcome. Must be in the active step's allow-list. 'rejected' and 'expired' are reserved for system transitions.
outcome_reason string Explanation for the outcome.
Constraints: default: ``
internal_notes string Internal notes captured by the call-management team. Stored on the step instance and never returned to applicants.
Constraints: default: ``

200 -

Field Type Description
detail string
proposal_state string New proposal state when the workflow terminates.
next_step string Identifier of the step that just became active.

Detach documents from proposal

Detach documents from proposal.

1
2
3
4
5
http \
  POST \
  https://api.example.com/api/proposal-proposals/a1b2c3d4-e5f6-7890-abcd-ef1234567890/detach_documents/ \
  Authorization:"Token YOUR_API_TOKEN" \
  documents:='[]'
 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.proposal_detach_documents_request import ProposalDetachDocumentsRequest # (1)
from waldur_api_client.api.proposal_proposals import proposal_proposals_detach_documents # (2)

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

body_data = ProposalDetachDocumentsRequest(
    documents=[]
)
response = proposal_proposals_detach_documents.sync(
    uuid="a1b2c3d4-e5f6-7890-abcd-ef1234567890",
    client=client,
    body=body_data
)

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

try {
  const response = await proposalProposalsDetachDocuments({
  auth: "Token YOUR_API_TOKEN",
  path: {
    "uuid": "a1b2c3d4-e5f6-7890-abcd-ef1234567890"
  },
  body: {
    "documents": []
  }
});
  console.log('Success:', response);
} catch (error) {
  console.error('Error:', error);
}
Name Type Required
uuid string (uuid)
Field Type Required
documents array of string (uuid)s

200 - No response body


Reject the proposal at the current workflow step

Reject the proposal at the current workflow step.

1
2
3
4
5
6
http \
  POST \
  https://api.example.com/api/proposal-proposals/a1b2c3d4-e5f6-7890-abcd-ef1234567890/reject_workflow_step/ \
  Authorization:"Token YOUR_API_TOKEN" \
  step_uuid="a1b2c3d4-e5f6-7890-abcd-ef1234567890" \
  reason="string-value"
 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.reject_workflow_step_request import RejectWorkflowStepRequest # (1)
from waldur_api_client.api.proposal_proposals import proposal_proposals_reject_workflow_step # (2)

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

body_data = RejectWorkflowStepRequest(
    step_uuid="a1b2c3d4-e5f6-7890-abcd-ef1234567890",
    reason="string-value"
)
response = proposal_proposals_reject_workflow_step.sync(
    uuid="a1b2c3d4-e5f6-7890-abcd-ef1234567890",
    client=client,
    body=body_data
)

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

try {
  const response = await proposalProposalsRejectWorkflowStep({
  auth: "Token YOUR_API_TOKEN",
  path: {
    "uuid": "a1b2c3d4-e5f6-7890-abcd-ef1234567890"
  },
  body: {
    "step_uuid": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
    "reason": "string-value"
  }
});
  console.log('Success:', response);
} catch (error) {
  console.error('Error:', error);
}
Name Type Required
uuid string (uuid)
Field Type Required Description
step_uuid string (uuid) UUID of the workflow step instance the client believes is active. Used to detect concurrent step transitions.
reason string Reason for rejecting the proposal at this step.
internal_notes string Internal notes captured by the call-management team alongside the rejection. Never returned to applicants.
Constraints: default: ``

200 -

Field Type
detail string
proposal_state string

Upload or replace the purchase order of a requested resource

Upload or replace the purchase order of a requested resource.

1
2
3
4
http \
  POST \
  https://api.example.com/api/proposal-proposals/string-value/resources/a1b2c3d4-e5f6-7890-abcd-ef1234567890/purchase_order/ \
  Authorization:"Token YOUR_API_TOKEN"
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
from waldur_api_client.client import AuthenticatedClient
from waldur_api_client.models.requested_resource_purchase_order_request import RequestedResourcePurchaseOrderRequest # (1)
from waldur_api_client.api.proposal_proposals import proposal_proposals_resource_purchase_order_set # (2)

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

body_data = RequestedResourcePurchaseOrderRequest()
response = proposal_proposals_resource_purchase_order_set.sync(
    obj_uuid="a1b2c3d4-e5f6-7890-abcd-ef1234567890",
    uuid="string-value",
    client=client,
    body=body_data
)

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

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

200 -

Field Type
attachment string (uri)
purchase_order_reference string

Create resource for a proposal

Create resource for a proposal.

1
2
3
4
http \
  POST \
  https://api.example.com/api/proposal-proposals/a1b2c3d4-e5f6-7890-abcd-ef1234567890/resources/ \
  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.requested_resource_request import RequestedResourceRequest # (1)
from waldur_api_client.api.proposal_proposals import proposal_proposals_resources_set # (2)

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

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

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

try {
  const response = await proposalProposalsResourcesSet({
  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
attributes object (free-form)
limits object (free-form)
purchase_order_reference string
description string
requested_offering_uuid string (uuid)
call_resource_template_uuid string (uuid)

200 -

Field Type Description
uuid string (uuid)
url string
requested_offering any
resource string (uri)
resource_name string
call_resource_template string
call_resource_template_name string
attributes object (free-form)
limits object (free-form)
purchase_order_reference string
attachment string (uri)
purchase_order_required boolean
has_purchase_order boolean Either half satisfies the requirement. Some providers want the document, others only need the reference from the customer's finance system; demanding both would block the second group for no gain.
description string
created_by string (uri)
created_by_name string

Submit a proposal

Submit a proposal.

1
2
3
4
http \
  POST \
  https://api.example.com/api/proposal-proposals/a1b2c3d4-e5f6-7890-abcd-ef1234567890/submit/ \
  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.proposal_proposals import proposal_proposals_submit # (1)

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

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

try {
  const response = await proposalProposalsSubmit({
  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 - No response body


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/proposal-proposals/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.proposal_proposals import proposal_proposals_submit_answers # (1)

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

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

try {
  const response = await proposalProposalsSubmitAnswers({
  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)
completion.requires_review boolean Whether any answers triggered review requirements
completion.reviewed_by integer User who reviewed the checklist completion
completion.reviewed_by_name string
completion.reviewed_at string (date-time)
completion.review_notes string Notes from the reviewer
completion.review_trigger_summary array of anys

400 -


404 -


Submit answers to a workflow step's checklist

Submit answers to a workflow step's checklist.

1
2
3
4
5
echo '[{"question_uuid": "a1b2c3d4-e5f6-7890-abcd-ef1234567890", "answer_data": null}]' | http \
  POST \
  https://api.example.com/api/proposal-proposals/a1b2c3d4-e5f6-7890-abcd-ef1234567890/submit-step-checklist-answers/ \
  Authorization:"Token YOUR_API_TOKEN" \
  step=="string-value"
 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.proposal_proposals import proposal_proposals_submit_step_checklist_answers # (1)

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

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

try {
  const response = await proposalProposalsSubmitStepChecklistAnswers({
  auth: "Token YOUR_API_TOKEN",
  path: {
    "uuid": "a1b2c3d4-e5f6-7890-abcd-ef1234567890"
  },
  query: {
    "step": "string-value"
  },
  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)
Name Type Required Description
step string Workflow step key (e.g. technical_assessment).

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)
completion.requires_review boolean Whether any answers triggered review requirements
completion.reviewed_by integer User who reviewed the checklist completion
completion.reviewed_by_name string
completion.reviewed_at string (date-time)
completion.review_notes string Notes from the reviewer
completion.review_trigger_summary array of anys

400 -


Update

1
2
3
4
http \
  PUT \
  https://api.example.com/api/proposal-proposals/string-value/resources/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
17
from waldur_api_client.client import AuthenticatedClient
from waldur_api_client.models.requested_resource_request import RequestedResourceRequest # (1)
from waldur_api_client.api.proposal_proposals import proposal_proposals_resources_update # (2)

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

body_data = RequestedResourceRequest()
response = proposal_proposals_resources_update.sync(
    obj_uuid="a1b2c3d4-e5f6-7890-abcd-ef1234567890",
    uuid="string-value",
    client=client,
    body=body_data
)

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

try {
  const response = await proposalProposalsResourcesUpdate({
  auth: "Token YOUR_API_TOKEN",
  path: {
    "obj_uuid": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
    "uuid": "string-value"
  }
});
  console.log('Success:', response);
} catch (error) {
  console.error('Error:', error);
}
Name Type Required
obj_uuid string
uuid string
Field Type Required
attributes object (free-form)
limits object (free-form)
purchase_order_reference string
description string
requested_offering_uuid string (uuid)
call_resource_template_uuid string (uuid)

200 -

Field Type Description
uuid string (uuid)
url string
requested_offering any
resource string (uri)
resource_name string
call_resource_template string
call_resource_template_name string
attributes object (free-form)
limits object (free-form)
purchase_order_reference string
attachment string (uri)
purchase_order_required boolean
has_purchase_order boolean Either half satisfies the requirement. Some providers want the document, others only need the reference from the customer's finance system; demanding both would block the second group for no gain.
description string
created_by string (uri)
created_by_name string

Partial Update

1
2
3
4
http \
  PATCH \
  https://api.example.com/api/proposal-proposals/string-value/resources/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
17
from waldur_api_client.client import AuthenticatedClient
from waldur_api_client.models.patched_requested_resource_request import PatchedRequestedResourceRequest # (1)
from waldur_api_client.api.proposal_proposals import proposal_proposals_resources_partial_update # (2)

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

body_data = PatchedRequestedResourceRequest()
response = proposal_proposals_resources_partial_update.sync(
    obj_uuid="a1b2c3d4-e5f6-7890-abcd-ef1234567890",
    uuid="string-value",
    client=client,
    body=body_data
)

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

try {
  const response = await proposalProposalsResourcesPartialUpdate({
  auth: "Token YOUR_API_TOKEN",
  path: {
    "obj_uuid": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
    "uuid": "string-value"
  }
});
  console.log('Success:', response);
} catch (error) {
  console.error('Error:', error);
}
Name Type Required
obj_uuid string
uuid string
Field Type Required
attributes object (free-form)
limits object (free-form)
purchase_order_reference string
description string
requested_offering_uuid string (uuid)
call_resource_template_uuid string (uuid)

200 -

Field Type Description
uuid string (uuid)
url string
requested_offering any
resource string (uri)
resource_name string
call_resource_template string
call_resource_template_name string
attributes object (free-form)
limits object (free-form)
purchase_order_reference string
attachment string (uri)
purchase_order_required boolean
has_purchase_order boolean Either half satisfies the requirement. Some providers want the document, others only need the reference from the customer's finance system; demanding both would block the second group for no gain.
description string
created_by string (uri)
created_by_name string

Remove the purchase order of a requested resource

Remove the purchase order of a requested resource.

1
2
3
4
http \
  DELETE \
  https://api.example.com/api/proposal-proposals/string-value/resources/a1b2c3d4-e5f6-7890-abcd-ef1234567890/purchase_order/ \
  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.proposal_proposals import proposal_proposals_resource_purchase_order_delete # (1)

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

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

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

204 - No response body


Delete

1
2
3
4
http \
  DELETE \
  https://api.example.com/api/proposal-proposals/string-value/resources/a1b2c3d4-e5f6-7890-abcd-ef1234567890/ \
  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.proposal_proposals import proposal_proposals_resources_destroy # (1)

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

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

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

200 -

Field Type Description
uuid string (uuid)
url string
requested_offering any
resource string (uri)
resource_name string
call_resource_template string
call_resource_template_name string
attributes object (free-form)
limits object (free-form)
purchase_order_reference string
attachment string (uri)
purchase_order_required boolean
has_purchase_order boolean Either half satisfies the requirement. Some providers want the document, others only need the reference from the customer's finance system; demanding both would block the second group for no gain.
description string
created_by string (uri)
created_by_name string