Allocation Process

API: Internal/Beta

Grants provide a way for users of UCloud to apply for resources.

Rationale

In order for any user to use UCloud they must have credits. Credits are required for use of any compute or storage. There are only two ways of receiving any credits, either through an admin directly granting you the credits or by receiving them from a project.

Grants acts as a more user-friendly gateway to receiving resources from a project. Every Application goes through the following steps:

  1. User submits application to relevant project using Grants.submitApplication

  2. Project administrator of Application.resourcesOwnedBy reviews the application

    • User and reviewer can comment on the application via Grants.commentOnApplication

    • User and reviewer can perform edits to the application via Grants.editApplication

  3. Reviewer either performs Grants.closeApplication or Grants.approveApplication

  4. If the Application was approved then resources are granted to the Application.grantRecipient


⚠️ WARNING: The API listed on this page will likely change to conform with our API conventions. Be careful when building integrations. The following changes are expected:

  • RPC names will change to conform with the conventions

  • RPC request and response types will change to conform with the conventions

  • RPCs which return a page will be collapsed into a single browse endpoint

  • Some property names will change to be consistent with Resources


Table of Contents

1. Remote Procedure Calls
Name Description
browseProjects Endpoint for users to browse projects which they can send grant [Application]s to
fetchDescription Fetches a description of a project
fetchLogo Fetches a logo for a project
ingoingApplications Lists active [Application]s which are 'ingoing' (received by) to a project
isEnabled If this returns true then the project (as specified by [IsEnabledRequest.projectId]) can receive grant [Application]s.
outgoingApplications Lists all active [Application]s made by the calling user
readRequestSettings No description
readTemplates Reads the templates for a new grant [Application]
retrieveAffiliations No description
retrieveProducts No description
approveApplication Approves an existing [Application] this will trigger granting of resources to the [Application.grantRecipient]
closeApplication Closes an existing [Application]
commentOnApplication Adds a comment to an existing [Application]
deleteComment Deletes a comment from an existing [Application]
editApplication Performs an edit to an existing [Application]
editReferenceId No description
rejectApplication Rejects an [Application]
setEnabledStatus Enables a project to receive [Application]
submitApplication Submits an [Application] to a project
transferApplication Transfers application to other root project
uploadDescription No description
uploadLogo Uploads a logo for a project, which is enabled
uploadRequestSettings Uploads [ProjectApplicationSettings] to be associated with a project. The project must be enabled.
uploadTemplates Uploads templates used for new grant Applications
viewApplication Retrieves an active [Application]
2. Data Models
Name Description
Application No description
ApplicationStatus No description
ApplicationWithComments No description
AutomaticApprovalSettings Settings which control if an Application should be automatically approved
Comment No description
CreateApplication No description
GrantApplicationFilter No description
GrantRecipient No description
GrantRecipient.ExistingProject No description
GrantRecipient.NewProject No description
GrantRecipient.PersonalProject No description
ProjectApplicationSettings Settings for grant Applications
ProjectWithTitle No description
UserCriteria Describes some criteria which match a user
UserCriteria.Anyone Matches any user
UserCriteria.EmailDomain Matches any user with an email domain equal to `domain`
UserCriteria.WayfOrganization Matches any user with an organization matching [org]
ApproveApplicationRequest No description
BrowseProjectsRequest The base type for requesting paginated content.
CloseApplicationRequest No description
CommentOnApplicationRequest No description
DeleteCommentRequest No description
EditApplicationRequest No description
EditReferenceIdRequest No description
FetchDescriptionRequest No description
FetchLogoRequest No description
GrantsRetrieveAffiliationsRequest The base type for requesting paginated content.
GrantsRetrieveProductsRequest No description
IngoingApplicationsRequest The base type for requesting paginated content.
IsEnabledRequest No description
OutgoingApplicationsRequest The base type for requesting paginated content.
ReadRequestSettingsRequest No description
ReadTemplatesRequest No description
RejectApplicationRequest No description
ResourceRequest No description
SetEnabledStatusRequest No description
TransferApplicationRequest No description
UploadDescriptionRequest No description
UploadLogoRequest No description
UploadTemplatesRequest No description
ViewApplicationRequest No description
FetchDescriptionResponse No description
GrantsRetrieveProductsResponse No description
IsEnabledResponse No description

Remote Procedure Calls

browseProjects

API: Internal/Beta Auth: Users

Endpoint for users to browse projects which they can send grant [Application]s to

Request Response Error
BrowseProjectsRequest PageV2<ProjectWithTitle> CommonErrorMessage

Concretely, this will return a list for which the user matches the criteria listed in [ProjectApplicationSettings.allowRequestsFrom].

fetchDescription

API: Internal/Beta Auth: Public

Fetches a description of a project

Request Response Error
FetchDescriptionRequest FetchDescriptionResponse CommonErrorMessage

ingoingApplications

API: Internal/Beta Auth: Users

Lists active [Application]s which are ‘ingoing’ (received by) to a project

Request Response Error
IngoingApplicationsRequest PageV2<Application> CommonErrorMessage

isEnabled

API: Internal/Beta Auth: Users

If this returns true then the project (as specified by [IsEnabledRequest.projectId]) can receive grant [Application]s.

Request Response Error
IsEnabledRequest IsEnabledResponse CommonErrorMessage

outgoingApplications

API: Internal/Beta Auth: Users

Lists all active [Application]s made by the calling user

Request Response Error
OutgoingApplicationsRequest PageV2<Application> CommonErrorMessage

readRequestSettings

API: Internal/Beta Auth: Users

Request Response Error
ReadRequestSettingsRequest ProjectApplicationSettings CommonErrorMessage

readTemplates

API: Internal/Beta Auth: Users

Reads the templates for a new grant [Application]

Request Response Error
ReadTemplatesRequest UploadTemplatesRequest CommonErrorMessage

User interfaces should display the relevant template, based on who will be the [Application.grantRecipient].

retrieveAffiliations

API: Internal/Beta Auth: Users

Request Response Error
GrantsRetrieveAffiliationsRequest PageV2<ProjectWithTitle> CommonErrorMessage

retrieveProducts

API: Internal/Beta Auth: Users

Request Response Error
GrantsRetrieveProductsRequest GrantsRetrieveProductsResponse CommonErrorMessage

approveApplication

API: Internal/Beta Auth: Users

Approves an existing [Application] this will trigger granting of resources to the [Application.grantRecipient]

Request Response Error
ApproveApplicationRequest Unit CommonErrorMessage

Only the grant reviewer can perform this action.

closeApplication

API: Internal/Beta Auth: Users

Closes an existing [Application]

Request Response Error
CloseApplicationRequest Unit CommonErrorMessage

This action is identical to [rejectApplication] except it can be performed by the [Application] creator.

commentOnApplication

API: Internal/Beta Auth: Users

Adds a comment to an existing [Application]

Request Response Error
CommentOnApplicationRequest Unit CommonErrorMessage

Only the [Application] creator and [Application] reviewers are allowed to comment on the [Application].

deleteComment

API: Internal/Beta Auth: Users

Deletes a comment from an existing [Application]

Request Response Error
DeleteCommentRequest Unit CommonErrorMessage

The comment can only be deleted by the author of the comment.

editApplication

API: Internal/Beta Auth: Users

Performs an edit to an existing [Application]

Request Response Error
EditApplicationRequest Unit CommonErrorMessage

Both the creator and any of the grant reviewers are allowed to edit the application.

editReferenceId

API: Internal/Beta Auth: Users

Request Response Error
EditReferenceIdRequest Unit CommonErrorMessage

rejectApplication

API: Internal/Beta Auth: Users

Rejects an [Application]

Request Response Error
RejectApplicationRequest Unit CommonErrorMessage

The [Application] cannot receive any new change to it and the [Application] creator must re-submit the [Application].

Only the grant reviewer can perform this action.

setEnabledStatus

API: Internal/Beta Auth: Services

Enables a project to receive [Application]

Request Response Error
SetEnabledStatusRequest Unit CommonErrorMessage

Note that a project will not be able to receive any applications until its [ProjectApplicationSettings.allowRequestsFrom] allow for it.

submitApplication

API: Internal/Beta Auth: Users

Submits an [Application] to a project

Request Response Error
CreateApplication FindByLongId CommonErrorMessage

In order for the user to submit an application they must match any criteria in [ProjectApplicationSettings.allowRequestsFrom]. If they are not the request will fail.

transferApplication

API: Internal/Beta Auth: Authenticated

Transfers application to other root project

Request Response Error
TransferApplicationRequest Unit CommonErrorMessage

uploadDescription

API: Internal/Beta Auth: Users

Request Response Error
UploadDescriptionRequest Unit CommonErrorMessage

uploadRequestSettings

API: Internal/Beta Auth: Users

Uploads [ProjectApplicationSettings] to be associated with a project. The project must be enabled.

Request Response Error
ProjectApplicationSettings Unit CommonErrorMessage

uploadTemplates

API: Internal/Beta Auth: Users

Uploads templates used for new grant Applications

Request Response Error
UploadTemplatesRequest Unit CommonErrorMessage

Only project administrators of the project can upload new templates. The project needs to be enabled.

viewApplication

API: Internal/Beta Auth: Users

Retrieves an active [Application]

Request Response Error
ViewApplicationRequest ApplicationWithComments CommonErrorMessage

Only the creator and grant reviewers are allowed to view any given [Application].

Data Models

Application

API: Internal/Beta

data class Application(
    val status: ApplicationStatus,
    val resourcesOwnedBy: String,
    val requestedBy: String,
    val grantRecipient: GrantRecipient,
    val document: String,
    val requestedResources: List<ResourceRequest>,
    val id: Long,
    val resourcesOwnedByTitle: String,
    val grantRecipientPi: String,
    val grantRecipientTitle: String,
    val createdAt: Long,
    val updatedAt: Long,
    val statusChangedBy: String?,
    val referenceId: String?,
)
Properties
status: ApplicationStatus
resourcesOwnedBy: String
requestedBy: String
grantRecipient: GrantRecipient
document: String
requestedResources: List<ResourceRequest>
id: Long
resourcesOwnedByTitle: String
grantRecipientPi: String
grantRecipientTitle: String
createdAt: Long
updatedAt: Long
statusChangedBy: String?
referenceId: String?

ApplicationStatus

API: Internal/Beta

enum class ApplicationStatus {
    APPROVED,
    REJECTED,
    CLOSED,
    IN_PROGRESS,
}
Properties
APPROVED
REJECTED
CLOSED
IN_PROGRESS

ApplicationWithComments

API: Internal/Beta

data class ApplicationWithComments(
    val application: Application,
    val comments: List<Comment>,
    val approver: Boolean,
)
Properties
application: Application
comments: List<Comment>
approver: Boolean

AutomaticApprovalSettings

API: Internal/Beta

Settings which control if an Application should be automatically approved

data class AutomaticApprovalSettings(
    val from: List<UserCriteria>,
    val maxResources: List<ResourceRequest>,
)

The Application will be automatically approved if the all of the following is true:

  • The requesting user matches any of the criteria in from

  • The user has only requested resources (Application.requestedResources) which are present in maxResources

  • None of the resource requests exceed the numbers specified in maxResources

Properties
from: List<UserCriteria>
maxResources: List<ResourceRequest>

Comment

API: Internal/Beta

data class Comment(
    val id: Long,
    val postedBy: String,
    val postedAt: Long,
    val comment: String,
)
Properties
id: Long
postedBy: String
postedAt: Long
comment: String

CreateApplication

API: Internal/Beta

data class CreateApplication(
    val resourcesOwnedBy: String,
    val grantRecipient: GrantRecipient,
    val document: String,
    val requestedResources: List<ResourceRequest>,
)
Properties
resourcesOwnedBy: String
grantRecipient: GrantRecipient
document: String
requestedResources: List<ResourceRequest>

GrantApplicationFilter

API: Internal/Beta

enum class GrantApplicationFilter {
    SHOW_ALL,
    ACTIVE,
    INACTIVE,
}
Properties
SHOW_ALL
ACTIVE
INACTIVE

GrantRecipient

API: Internal/Beta

sealed class GrantRecipient {
    class ExistingProject : GrantRecipient()
    class NewProject : GrantRecipient()
    class PersonalProject : GrantRecipient()
}

GrantRecipient.ExistingProject

API: Internal/Beta

data class ExistingProject(
    val projectId: String,
    val type: String /* "existing_project" */,
)
Properties
projectId: String
type: String /* "existing_project" */ The type discriminator

API: Stable


GrantRecipient.NewProject

API: Internal/Beta

data class NewProject(
    val projectTitle: String,
    val type: String /* "new_project" */,
)
Properties
projectTitle: String
type: String /* "new_project" */ The type discriminator

API: Stable


GrantRecipient.PersonalProject

API: Internal/Beta

data class PersonalProject(
    val username: String,
    val type: String /* "personal" */,
)
Properties
username: String
type: String /* "personal" */ The type discriminator

API: Stable


ProjectApplicationSettings

API: Internal/Beta

Settings for grant Applications

data class ProjectApplicationSettings(
    val automaticApproval: AutomaticApprovalSettings,
    val allowRequestsFrom: List<UserCriteria>,
    val excludeRequestsFrom: List<UserCriteria>,
)

A user will be allowed to apply for grants to this project if they match any of the criteria listed in allowRequestsFrom.

Properties
automaticApproval: AutomaticApprovalSettings
allowRequestsFrom: List<UserCriteria>
excludeRequestsFrom: List<UserCriteria>

ProjectWithTitle

API: Internal/Beta

data class ProjectWithTitle(
    val projectId: String,
    val title: String,
)
Properties
projectId: String
title: String

UserCriteria

API: Internal/Beta

Describes some criteria which match a user

sealed class UserCriteria {
    class Anyone : UserCriteria()
    class EmailDomain : UserCriteria()
    class WayfOrganization : UserCriteria()
}

This is used in conjunction with actions that require authorization.


UserCriteria.Anyone

API: Internal/Beta

Matches any user

data class Anyone(
    val type: String /* "anyone" */,
)
Properties
type: String /* "anyone" */ The type discriminator

API: Stable


UserCriteria.EmailDomain

API: Internal/Beta

Matches any user with an email domain equal to domain

data class EmailDomain(
    val domain: String,
    val type: String /* "email" */,
)
Properties
domain: String
type: String /* "email" */ The type discriminator

API: Stable


UserCriteria.WayfOrganization

API: Internal/Beta

Matches any user with an organization matching [org]

data class WayfOrganization(
    val org: String,
    val type: String /* "wayf" */,
)

The organization is currently derived from the information we receive from WAYF.

Properties
org: String
type: String /* "wayf" */ The type discriminator

API: Stable


ApproveApplicationRequest

API: Internal/Beta

data class ApproveApplicationRequest(
    val requestId: Long,
)
Properties
requestId: Long

BrowseProjectsRequest

API: Internal/Beta

The base type for requesting paginated content.

data class BrowseProjectsRequest(
    val itemsPerPage: Int?,
    val next: String?,
    val consistency: PaginationRequestV2Consistency?,
    val itemsToSkip: Long?,
)

Paginated content can be requested with one of the following consistency guarantees, this greatly changes the semantics of the call:

Consistency Description
PREFER Consistency is preferred but not required. An inconsistent snapshot might be returned.
REQUIRE Consistency is required. A request will fail if consistency is no longer guaranteed.

The consistency refers to if collecting all the results via the pagination API are consistent. We consider the results to be consistent if it contains a complete view at some point in time. In practice this means that the results must contain all the items, in the correct order and without duplicates.

If you use the PREFER consistency then you may receive in-complete results that might appear out-of-order and can contain duplicate items. UCloud will still attempt to serve a snapshot which appears mostly consistent. This is helpful for user-interfaces which do not strictly depend on consistency but would still prefer something which is mostly consistent.

The results might become inconsistent if the client either takes too long, or a service instance goes down while fetching the results. UCloud attempts to keep each next token alive for at least one minute before invalidating it. This does not mean that a client must collect all results within a minute but rather that they must fetch the next page within a minute of the last page. If this is not feasible and consistency is not required then PREFER should be used.


📝 NOTE: Services are allowed to ignore extra criteria of the request if the next token is supplied. This is needed in order to provide a consistent view of the results. Clients should provide the same criterion as they paginate through the results.


Properties
itemsPerPage: Int? Requested number of items per page. Supported values: 10, 25, 50, 100, 250.
next: String? A token requesting the next page of items
consistency: PaginationRequestV2Consistency? Controls the consistency guarantees provided by the backend
itemsToSkip: Long? Items to skip ahead

CloseApplicationRequest

API: Internal/Beta

data class CloseApplicationRequest(
    val requestId: Long,
)
Properties
requestId: Long

CommentOnApplicationRequest

API: Internal/Beta

data class CommentOnApplicationRequest(
    val requestId: Long,
    val comment: String,
)
Properties
requestId: Long
comment: String

DeleteCommentRequest

API: Internal/Beta

data class DeleteCommentRequest(
    val commentId: Long,
)
Properties
commentId: Long

EditApplicationRequest

API: Internal/Beta

data class EditApplicationRequest(
    val id: Long,
    val newDocument: String,
    val newResources: List<ResourceRequest>,
)
Properties
id: Long
newDocument: String
newResources: List<ResourceRequest>

EditReferenceIdRequest

API: Internal/Beta

data class EditReferenceIdRequest(
    val id: Long,
    val newReferenceId: String?,
)
Properties
id: Long
newReferenceId: String?

FetchDescriptionRequest

API: Internal/Beta

data class FetchDescriptionRequest(
    val projectId: String,
)
Properties
projectId: String

FetchLogoRequest

API: Internal/Beta

data class FetchLogoRequest(
    val projectId: String,
)
Properties
projectId: String

GrantsRetrieveAffiliationsRequest

API: Internal/Beta

The base type for requesting paginated content.

data class GrantsRetrieveAffiliationsRequest(
    val grantId: Long,
    val itemsPerPage: Int?,
    val next: String?,
    val consistency: PaginationRequestV2Consistency?,
    val itemsToSkip: Long?,
)

Paginated content can be requested with one of the following consistency guarantees, this greatly changes the semantics of the call:

Consistency Description
PREFER Consistency is preferred but not required. An inconsistent snapshot might be returned.
REQUIRE Consistency is required. A request will fail if consistency is no longer guaranteed.

The consistency refers to if collecting all the results via the pagination API are consistent. We consider the results to be consistent if it contains a complete view at some point in time. In practice this means that the results must contain all the items, in the correct order and without duplicates.

If you use the PREFER consistency then you may receive in-complete results that might appear out-of-order and can contain duplicate items. UCloud will still attempt to serve a snapshot which appears mostly consistent. This is helpful for user-interfaces which do not strictly depend on consistency but would still prefer something which is mostly consistent.

The results might become inconsistent if the client either takes too long, or a service instance goes down while fetching the results. UCloud attempts to keep each next token alive for at least one minute before invalidating it. This does not mean that a client must collect all results within a minute but rather that they must fetch the next page within a minute of the last page. If this is not feasible and consistency is not required then PREFER should be used.


📝 NOTE: Services are allowed to ignore extra criteria of the request if the next token is supplied. This is needed in order to provide a consistent view of the results. Clients should provide the same criterion as they paginate through the results.


Properties
grantId: Long
itemsPerPage: Int? Requested number of items per page. Supported values: 10, 25, 50, 100, 250.
next: String? A token requesting the next page of items
consistency: PaginationRequestV2Consistency? Controls the consistency guarantees provided by the backend
itemsToSkip: Long? Items to skip ahead

GrantsRetrieveProductsRequest

API: Internal/Beta

data class GrantsRetrieveProductsRequest(
    val projectId: String,
    val recipientType: String,
    val recipientId: String,
    val showHidden: Boolean?,
)
Properties
projectId: String
recipientType: String
recipientId: String
showHidden: Boolean?

IngoingApplicationsRequest

API: Internal/Beta

The base type for requesting paginated content.

data class IngoingApplicationsRequest(
    val filter: GrantApplicationFilter?,
    val itemsPerPage: Int?,
    val next: String?,
    val consistency: PaginationRequestV2Consistency?,
    val itemsToSkip: Long?,
)

Paginated content can be requested with one of the following consistency guarantees, this greatly changes the semantics of the call:

Consistency Description
PREFER Consistency is preferred but not required. An inconsistent snapshot might be returned.
REQUIRE Consistency is required. A request will fail if consistency is no longer guaranteed.

The consistency refers to if collecting all the results via the pagination API are consistent. We consider the results to be consistent if it contains a complete view at some point in time. In practice this means that the results must contain all the items, in the correct order and without duplicates.

If you use the PREFER consistency then you may receive in-complete results that might appear out-of-order and can contain duplicate items. UCloud will still attempt to serve a snapshot which appears mostly consistent. This is helpful for user-interfaces which do not strictly depend on consistency but would still prefer something which is mostly consistent.

The results might become inconsistent if the client either takes too long, or a service instance goes down while fetching the results. UCloud attempts to keep each next token alive for at least one minute before invalidating it. This does not mean that a client must collect all results within a minute but rather that they must fetch the next page within a minute of the last page. If this is not feasible and consistency is not required then PREFER should be used.


📝 NOTE: Services are allowed to ignore extra criteria of the request if the next token is supplied. This is needed in order to provide a consistent view of the results. Clients should provide the same criterion as they paginate through the results.


Properties
filter: GrantApplicationFilter?
itemsPerPage: Int? Requested number of items per page. Supported values: 10, 25, 50, 100, 250.
next: String? A token requesting the next page of items
consistency: PaginationRequestV2Consistency? Controls the consistency guarantees provided by the backend
itemsToSkip: Long? Items to skip ahead

IsEnabledRequest

API: Internal/Beta

data class IsEnabledRequest(
    val projectId: String,
)
Properties
projectId: String

OutgoingApplicationsRequest

API: Internal/Beta

The base type for requesting paginated content.

data class OutgoingApplicationsRequest(
    val filter: GrantApplicationFilter?,
    val itemsPerPage: Int?,
    val next: String?,
    val consistency: PaginationRequestV2Consistency?,
    val itemsToSkip: Long?,
)

Paginated content can be requested with one of the following consistency guarantees, this greatly changes the semantics of the call:

Consistency Description
PREFER Consistency is preferred but not required. An inconsistent snapshot might be returned.
REQUIRE Consistency is required. A request will fail if consistency is no longer guaranteed.

The consistency refers to if collecting all the results via the pagination API are consistent. We consider the results to be consistent if it contains a complete view at some point in time. In practice this means that the results must contain all the items, in the correct order and without duplicates.

If you use the PREFER consistency then you may receive in-complete results that might appear out-of-order and can contain duplicate items. UCloud will still attempt to serve a snapshot which appears mostly consistent. This is helpful for user-interfaces which do not strictly depend on consistency but would still prefer something which is mostly consistent.

The results might become inconsistent if the client either takes too long, or a service instance goes down while fetching the results. UCloud attempts to keep each next token alive for at least one minute before invalidating it. This does not mean that a client must collect all results within a minute but rather that they must fetch the next page within a minute of the last page. If this is not feasible and consistency is not required then PREFER should be used.


📝 NOTE: Services are allowed to ignore extra criteria of the request if the next token is supplied. This is needed in order to provide a consistent view of the results. Clients should provide the same criterion as they paginate through the results.


Properties
filter: GrantApplicationFilter?
itemsPerPage: Int? Requested number of items per page. Supported values: 10, 25, 50, 100, 250.
next: String? A token requesting the next page of items
consistency: PaginationRequestV2Consistency? Controls the consistency guarantees provided by the backend
itemsToSkip: Long? Items to skip ahead

ReadRequestSettingsRequest

API: Internal/Beta

data class ReadRequestSettingsRequest(
    val projectId: String,
)
Properties
projectId: String

ReadTemplatesRequest

API: Internal/Beta

data class ReadTemplatesRequest(
    val projectId: String,
)
Properties
projectId: String

RejectApplicationRequest

API: Internal/Beta

data class RejectApplicationRequest(
    val requestId: Long,
    val notify: Boolean?,
)
Properties
requestId: Long
notify: Boolean?

ResourceRequest

API: Internal/Beta

data class ResourceRequest(
    val productCategory: String,
    val productProvider: String,
    val balanceRequested: Long?,
)
Properties
productCategory: String
productProvider: String
balanceRequested: Long?

SetEnabledStatusRequest

API: Internal/Beta

data class SetEnabledStatusRequest(
    val projectId: String,
    val enabledStatus: Boolean,
)
Properties
projectId: String
enabledStatus: Boolean

TransferApplicationRequest

API: Internal/Beta

data class TransferApplicationRequest(
    val applicationId: Long,
    val transferToProjectId: String,
)
Properties
applicationId: Long
transferToProjectId: String

UploadDescriptionRequest

API: Internal/Beta

data class UploadDescriptionRequest(
    val projectId: String,
    val description: String,
)
Properties
projectId: String
description: String

UploadLogoRequest

API: Internal/Beta

data class UploadLogoRequest(
    val projectId: String,
)
Properties
projectId: String

UploadTemplatesRequest

API: Internal/Beta

data class UploadTemplatesRequest(
    val personalProject: String,
    val newProject: String,
    val existingProject: String,
)
Properties
personalProject: String The template provided for new grant applications when the grant requester is a personal project
newProject: String The template provided for new grant applications when the grant requester is a new project
existingProject: String The template provided for new grant applications when the grant requester is an existing project

ViewApplicationRequest

API: Internal/Beta

data class ViewApplicationRequest(
    val id: Long,
)
Properties
id: Long

FetchDescriptionResponse

API: Internal/Beta

data class FetchDescriptionResponse(
    val description: String,
)
Properties
description: String

GrantsRetrieveProductsResponse

API: Internal/Beta

data class GrantsRetrieveProductsResponse(
    val availableProducts: List<Product>,
)
Properties
availableProducts: List<Product>

IsEnabledResponse

API: Internal/Beta

data class IsEnabledResponse(
    val enabled: Boolean,
)
Properties
enabled: Boolean