Changelog for @pdc/service
All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog,
and this project adheres to Semantic Versioning.
Unreleased
Changed
- A changemaker now carries the
keycloakOrganizationId,createdAt, andcreatedByattributes, and itsfiscalSponsors, only when the requester holdsviewpermission on that changemaker. Every other requester, including an unauthenticated one, receivesid,name, andtaxId, plusfieldswhere the endpoint returns it at all. This applies wherever a changemaker appears, not just at/changemakers: the changemakers embedded in a proposal, in a source, and in another changemaker’sfiscalSponsorsare narrowed the same way. Permission is evaluated per changemaker, so a single array may hold both shapes. fieldsremains an empty array for unauthenticated requests; it is kept in the response shape to support future visibility ofpublicbase field values.
0.42.0 2026-08-25
Added
- Added an
initiativeentity representing a project led by a changemaker, managed via the/initiativesendpoints. - Added an
initiativeFieldValueentity capturing base field data for an initiative, managed via the/initiatives/{initiativeId}/fieldValuesendpoints. - Added an
initiativepermission scope, inherited from the owning changemaker, that governs who can view and edit initiatives. - Added an
initiativeFieldValuepermission scope, inherited from the owning initiative and changemaker, that governs who can view, create, and edit initiative field values. - Added a
baseFieldCategorycondition for grants scoped toinitiativeFieldValue.
Removed
- The
platformProviderResponseentity no longer exists, along with theGET /platformProviderResponsesandPOST /platformProviderResponsesendpoints. It predatedchangemakerFieldValuesand was unused.
Fixed
POST /permissionGrantsnow acceptssourceas a scope forfunder,changemaker, anddataProvidercontext entity types, matching the documented and database-supported behavior. Previously the handler rejected these grants withInputValidationErroreven though the SQL inheritance already supportedsourcegrants inherited from a source’s funder, changemaker, or data provider.
0.41.0 2026-07-24
Fixed
- Paginated list endpoints no longer slow down as you request later pages.
Added
- Proposal field value objects now include a
proposalIdattribute, so a value in a changemaker’sfields(or anywhere else a proposal field value appears) can be traced back to its proposal without an extra call toGET /proposalVersions/{proposalVersionId}. - Added a
GET /funders/{memberFunderShortCode}/collaborativesendpoint that lists funder collaborative memberships for a given member funder. - Bulk upload CSVs may now include
control:-prefixed columns (e.g.control:pdc_changemaker_id). Control columns carry meta-information that changes how a row is processed; they are exempt from application-form validation and are not stored as base fields.
Changed
pdc_changemaker_idis now expected as acontrol:column in a bulk-upload, rather than as a base field.GET /permissionGrantsnow accepts optional filter query parameters:changemaker,funder,dataProvider, andproposalto filter by context entity, andgranteeTypeandverbto filter by grantee. At most one context entity filter may be provided per request; providing more than one returns a400.
0.40.0 2026-06-26
Added
- Bulk uploads accept an optional
pdc_changemaker_idcolumn. When a row supplies a value in that column, the proposal is attached to that exact existing changemaker instead of matching/creating one byorganization_tax_id+organization_name. An invalid or unknown id fails the task with a logged error. - Added a
terminologySetentity that lets funders define custom display labels for opportunities, proposals, and application forms, managed via the/terminologySetsendpoints. - Added a
terminologySetpermission scope, inherited from the owning funder, that governs who can view and edit terminology sets. - Opportunities can now reference a terminology set owned by the same funder.
- Funders can now designate a default terminology set.
0.39.0 2026-06-24
Changed
- Listing opportunities and bulk upload tasks no longer slows down as the number of permission grants grows.
- Listing application forms and application form fields no longer slows down as the number of permission grants grows.
- Listing sources no longer slows down as the number of permission grants grows.
- Listing proposals and changemaker-proposal relationships no longer slows down as the number of permission grants grows.
- Listing changemaker field values no longer slows down as the number of permission grants grows.
- Listing permission grants no longer slows down as the number of permission grants grows.
Fixed
- Funder collaborative endpoints now return
403(or404) instead of401when an authenticated user lacks permission. POST /opportunitiesnow returns403(or404) instead of401when an authenticated user lacks permission on the associated funder.POST /proposalsnow returns403(or404) instead of422when an authenticated user lacks permission on (or cannot view) the associated opportunity.POST /changemakerFieldValueBatchesnow returns403(or404) instead of422when an authenticated user lacks permission to reference (or cannot view) the specified source.POST /changemakerFieldValuesnow returns403when an authenticated user lacks permission to create field values for the specified changemaker, and404(instead of409) when the changemaker, base field, or batch does not exist.POST /changemakerProposalsnow returns403(instead of422) when an authenticated user lacks permission on the funder associated with the proposal, and404(instead of422) when the associated proposal cannot be viewed or does not exist.POST /sourcesnow returns403(instead of422) when an authenticated user lacks permission to create a source for the specified funder, data provider, or changemaker, and404when that organization does not exist.POST /proposalVersionsnow returns403(instead of422) when an authenticated user lacks permission to edit the proposal or reference the source, and404(instead of409) when the proposal, source, application form, or application form field cannot be viewed or does not exist. A409is now returned only when the application form or field is not associated with the proposal.POST /tasks/bulkUploadsnow returns403(instead of422) when an authenticated user lacks permission to create proposals for the application form’s opportunity or to reference the source, and404(instead of422) when the application form, opportunity, or source cannot be viewed or does not exist.POST /permissionGrantsnow returns403(instead of401) when an authenticated user lacks permission to manage permission grants on the specified context entity, and404when that context entity cannot be viewed or does not exist.PUT /permissionGrants/:permissionGrantIdnow returns403(instead of401) when an authenticated user lacks permission to manage permission grants on the specified context entity, and404when that context entity cannot be viewed or does not exist.POST /applicationFormsnow returns403(instead of401) when an authenticated user lacks permission on the associated opportunity, and404(instead of422) when that opportunity cannot be viewed or does not exist.PATCH /applicationFormFields/:applicationFormFieldIdnow returns403(instead of401) when an authenticated user lacks edit permission on the field’s application form.
0.38.0 2026-06-12
Fixed
- Corrected the OpenAPI
Organization.funderschema to reference theFunderschema instead ofDataProvider. Documentation-only; no behavior change. - Corrected the OpenAPI
Sourceschema to no longer list the non-existentrelatedEntityIdas a required property. Documentation-only; no behavior change. - Corrected the OpenAPI
PresignedPost.fieldsschema to allow the dynamic S3 POST form fields (e.g.policy,x-amz-*) viaadditionalProperties. Documentation-only; no behavior change. - Corrected the OpenAPI
BaseFieldschema to markshortCodeasreadOnly(it used the misspelled, ignoredread-onlykeyword). Documentation-only; no behavior change. - Corrected the OpenAPI
BaseFieldLocalizationschema:descriptionandcreatedAtare no longer nullable,createdAtis nowreadOnlyand required, andbaseFieldShortCodeis nowreadOnly, matching the actual payload. Documentation-only; no behavior change. - Corrected the OpenAPI
BulkUploadTask.logsschema to describe an array ofBulkUploadLogitems (it previously used an invalid bundle-styleproperties.entriesshape). Documentation-only; no behavior change. - Corrected the OpenAPI
BulkUploadLog.detailsschema to referenceBulkUploadLogDetailsdirectly (it previously wrapped the reference in a spuriousentriesproperty). Documentation-only; no behavior change. - Corrected the OpenAPI
BulkUploadLogDetails.causeschema to referenceBulkUploadLogDetailsrecursively, matching the real nested-cause payload. Documentation-only; no behavior change. - Corrected the OpenAPI
Opportunityschema to requirefunderShortCodeandfunder, which are always present in responses. Documentation-only; no behavior change. - Corrected the OpenAPI
ProposalVersionschema to requiresourceandcreatedBy, which are always present in responses. Documentation-only; no behavior change. - Corrected the OpenAPI
FunderCollaborativeInvitationschema to requireinvitationStatus, which is always present in responses. Documentation-only; no behavior change. - Corrected the OpenAPI
User.keycloakUserNameschema to be nullable, matching the actual payload. Documentation-only; no behavior change.
0.37.0 2026-05-25
Fixed
- Bulk upload processing no longer fails when a row leaves a file-typed field blank. The empty cell is stored as a non-file value (
value: "",isValid: false) and no attachment lookup is attempted for that field.
Changed
GET /opportunitiesnow accepts an optionalfunderquery parameter to filter opportunities by funder shortCode.- Creating an entity now automatically grants the creator a
managepermission withanyscope on the new entity. This applies to opportunities, changemakers, proposals, sources, bulk upload tasks, application forms (and their fields), proposal versions (and their field values), and changemaker field values created via the HTTP API, as well as proposals, proposal versions, proposal field values, and newly inserted changemakers created during bulk upload processing. - Viewing application forms now requires explicit
view | applicationFormscope, checked via a newhas_application_form_permissionfunction. The scope can be granted at the applicationForm, opportunity, or funder context level and is inherited appropriately. Previously this was implicitly granted by anyview | opportunitygrant. - Viewing application form fields now requires explicit
view | applicationFormscope on the parent application form, checked viahas_application_form_permission. Previously this was implicitly granted by anyview | opportunitygrant. Application form fields do not have their own independent permission scope; access to a field is determined entirely by access to its parent form. POST /applicationFormsnow requiresedit | applicationFormscope on the target opportunity instead ofedit | opportunity.PATCH /applicationFormFields/:applicationFormFieldIdnow requiresedit | applicationFormscope on the parent application form instead ofedit | opportunity.- Existing permission grants with
opportunityscope on funder or opportunity contexts have been migrated to also includeapplicationFormscope. This preserves prior access for grantees who relied onopportunity-scoped grants for application form access. /permissionGrantsendpoints (list, read, create, update, delete) no longer require administrator role. Non-admin users holding themanageverb on a grant’s context entity may now list, read, create, update, and delete those grants.GET /permissionGrantsfilters results for non-admins to grants whose context entity they can manage. Updating a grant requires manage on both the existing and proposed context entity.- Standardized OpenAPI error responses onto shared, reusable
components/responsesreferenced via$ref(with per-endpointdescriptionoverrides) instead of inline duplicates. Error responses now consistently document aPdcErrorbody, and every authenticated endpoint documents a401. Documentation-only; no behavior change. - Every endpoint now documents a
500response via a shared, reusableInternalServerErrorcomponent. Documentation-only; no behavior change.
0.36.0 2026-05-12
Added
- Permission grant responses now include a
createdByUserfield containing the full user entity, similar to what we’ve
implemented for Bulk Uploads.
Changed
- Upsert endpoints now distinguish a created row from an updated one via the HTTP response status: a fresh insert returns
201 Created, while updating an existing row returns200 OK. This applies toPUT /baseFields/:shortCode,PUT /baseFields/:shortCode/localizations/:language,PUT /changemakers/:id/fiscalSponsors/:fiscalSponsorChangemakerId,PUT /dataProviders/:shortCode,PUT /funders/:shortCode,POST /funders/:shortCode/members/:memberFunderShortCode, andPOST /funders/:shortCode/invitations/sent/:invitedFunderShortCode. Previously each endpoint returned a fixed status (some200, some201) regardless of whether a row was inserted or updated.
0.35.0 2026-05-05
Added
- Added
anyto the permission grant entity type set. Whenanyis included in a grant’sscopearray, that grant satisfies any scope check on its context (e.g.,view | anyon a funder context grants view access for funder-, opportunity-, proposal-, and proposal-field-value-scoped data on that funder, including scope types added in the future).anyis also recognized as a context entity type for forward compatibility but is not yet accepted by the API as a context.
Changed
GET /baseFieldsis now paginated in the same manner as all otherGETendpoints. This is a breaking change. The endpoint can now take pagination parameters (_count,_page) and will return{ entries , total }whereentriesis an array of base fields,- The
managepermission verb now satisfies any verb check on the scope to which it is granted. A grantee withmanageon a given scope no longer needs the other verbs listed alongside it to perform view, create, edit, delete, or reference operations at that scope. Scope matching is unchanged:managedoes not grant access to scopes that are not explicitly included in the grant.
0.34.0 2026-04-23
Added
- Add extension support in phone number validation.
- Add changelog to documents that auto-publish to WordPress.
GET /fundersnow supports theisCollaborativequery parameter to filter funders by their collaborative status.- Added a new
referenceverb to the permission grant verb set. Reference is intended to gate whether a user may cite an entity as a pointer in data they are creating, separate fromview(which only grants read access) andcreate(which grants the ability to author new instances of an entity type).
Changed
- All ID fields in the OpenAPI specification now reference a shared
idschema with constraints (minimum: 1, maximum: 2147483647) instead of using bareintegertypes. GET /sourcesandGET /sources/:sourceIdnow filter results byview | sourcepermission; sources are no longer universally visible to authenticated users.- Source creation now requires
create | sourcescope (previously requirededit | funder,edit | changemaker, oredit | dataProvider). Existing permission grants with the parent entity’s scope have been migrated to also includesourcescope, and newcreate | sourcegrants have been created for users who previously hadeditverb on the parent entity. POST /proposalVersions,POST /tasks/bulkUploads, andPOST /changemakerFieldValueBatchesnow require areference | sourcegrant on the supplied source. Grants can be made directly on the source or inherited from the source’s funder, changemaker, or data provider. This is a breaking change: previous behavior allowed any authenticated user to supply any source, so existing users will need newreference | sourcegrants before they can use these endpoints.
Fixed
baseFieldShortCodepath parameters in base field localization endpoints were incorrectly typed asintegerinstead ofshortCode.
0.33.0 2026-04-14
Added
- Added
createdByfield to funders, sources, opportunities, changemakers, and data providers. BaseFieldcan now be of typedateanddate_time.GET /changemakersnow supports the_contentquery parameter to search changemakers by name using full-text search.- Proposals now include a
changemakersarray containing shallow changemaker data for all associated changemakers. - Permission grants now support optional
conditionsthat restrict which entities the grant applies to based on entity data. The initial implementation supports filteringproposalFieldValuescope bybaseFieldCategoryusing theinoperator. - Permission grants can now be updated via
PUT /permissionGrants/:permissionGrantId. All mutable fields are replaced with the provided values.
Changed
- Permission grants for users no longer require the user to exist in the PDC database. Grants can now reference any Keycloak user UUID, matching the existing behavior for user group grants.
- ProposalVersion creation now requires
edit | proposalscope (checked viahas_proposal_permission) instead ofedit | funderscope. Existing funder permission grants witheditverb andfunderscope have been migrated to also includeproposalscope. - Opportunity creation now requires
create | opportunityscope on funder permission grants (previouslyedit | funder). - Viewing opportunities, application forms, application form fields, and bulk upload tasks now uses
opportunityscope instead offunderscope. - Creating and editing application forms and application form fields now uses
edit | opportunityscope instead ofedit | funder. - Creating bulk upload tasks now requires
create | proposalscope instead ofedit | opportunity. - Application form field queries now enforce permission checks via
has_opportunity_permission. - Existing funder permission grants with
funderscope have been migrated to also includeopportunityscope. Newcreate | opportunitygrants have been created for users who hadedit | funder. - Creating changemaker field values now requires
create | changemakerFieldValuescope (previously requirededit | changemaker). This scope can be granted at the changemaker context level. - Existing changemaker permissions with
changemakerscope have been migrated to also includechangemakerFieldValuescope, ensuring backward compatibility.
Fixed
- Bundle
totalnow reflects the count of results matching the current query filters, permissions, and search terms. Previously it returned the full table row count regardless of any applied filters. - Permission checks for userGroup-based grants now correctly ignore expired ephemeral user group associations.
0.32.0 2026-02-20
Added
applicationFormFieldnow has aninputTypefield to provide rendering hints for UIs rendering the fields.
0.31.0 2026-02-12
Added
GET /filesendpoint to retrieve a paginated list of files. Users see only files they created; administrators can see all files and filter by creator using thecreatedByparameter.- Added optional
namefield toApplicationFormentity for human-readable display.
Changed
- Viewing changemaker field values now requires explicit
view | changemakerFieldValuescope, unless the field haspublicsensitivity classification. This scope can be granted at the changemaker context level. - Viewing proposal field values now requires explicit
view | proposalFieldValuescope. This scope can be granted at the proposalFieldValue, proposal, opportunity, funder, or changemaker context level. Users with onlyview | proposalscope will see proposals with emptyfieldValuesarrays. - Existing permissions with
proposalscope have been migrated to also includeproposalFieldValuescope, ensuring backward compatibility. - Migrated changemaker permissions to the unified
permission_grantstable. Changemaker permissions should now be managed via the/permissionGrantsendpoints. - Migrated funder permissions to the unified
permission_grantstable. Funder permissions should now be managed via the/permissionGrantsendpoints. - Migrated data provider permissions to the unified
permission_grantstable. Data provider permissions should now be managed via the/permissionGrantsendpoints. - Migrated opportunity permissions to the unified
permission_grantstable. Opportunity permissions should now be managed via the/permissionGrantsendpoints. - The
permissionsproperty has been removed from theUsertype entirely. All permission checks are now performed asynchronously via the permission_grants table. - Viewing proposals, proposal versions, and changemaker-proposal associations now requires
view | proposalscope instead of inheriting fromview | funderorview | changemaker. Theview | proposalscope can be granted at the proposal, opportunity, funder, or changemaker context level and will be inherited appropriately.
Removed
- Legacy changemaker permission endpoints have been removed:
PUT /users/{userKeycloakUserId}/changemakers/{changemakerId}/permissions/{permission}DELETE /users/{userKeycloakUserId}/changemakers/{changemakerId}/permissions/{permission}PUT /userGroups/{keycloakOrganizationId}/changemakers/{changemakerId}/permissions/{permission}DELETE /userGroups/{keycloakOrganizationId}/changemakers/{changemakerId}/permissions/{permission}
UserChangemakerPermissionandUserGroupChangemakerPermissionschemas have been removed from the OpenAPI spec.- Legacy funder permission endpoints have been removed:
PUT /users/{userKeycloakUserId}/funders/{funderShortCode}/permissions/{permission}DELETE /users/{userKeycloakUserId}/funders/{funderShortCode}/permissions/{permission}PUT /userGroups/{keycloakOrganizationId}/funders/{funderShortCode}/permissions/{permission}DELETE /userGroups/{keycloakOrganizationId}/funders/{funderShortCode}/permissions/{permission}
UserFunderPermissionandUserGroupFunderPermissionschemas have been removed from the OpenAPI spec.- Legacy data provider permission endpoints have been removed:
PUT /users/{userKeycloakUserId}/dataProviders/{dataProviderShortCode}/permissions/{permission}DELETE /users/{userKeycloakUserId}/dataProviders/{dataProviderShortCode}/permissions/{permission}PUT /userGroups/{keycloakOrganizationId}/dataProviders/{dataProviderShortCode}/permissions/{permission}DELETE /userGroups/{keycloakOrganizationId}/dataProviders/{dataProviderShortCode}/permissions/{permission}
UserDataProviderPermissionandUserGroupDataProviderPermissionschemas have been removed from the OpenAPI spec.- Legacy opportunity permission endpoints have been removed:
PUT /users/{userKeycloakUserId}/opportunities/{opportunityId}/permissions/{opportunityPermission}DELETE /users/{userKeycloakUserId}/opportunities/{opportunityId}/permissions/{opportunityPermission}PUT /userGroups/{keycloakOrganizationId}/opportunities/{opportunityId}/permissions/{opportunityPermission}DELETE /userGroups/{keycloakOrganizationId}/opportunities/{opportunityId}/permissions/{opportunityPermission}
UserOpportunityPermissionandUserGroupOpportunityPermissionschemas have been removed from the OpenAPI spec.
Fixed
Changemaker.fieldsfile values are now decorated withdownloadUrlto allow access to file contents.ChangemakerProposal.proposal.versions[].fieldValuesfile values are now decorated withdownloadUrl.
0.30.0 2026-01-27
Added
PermissionGrantentity type now exists to represent permission grants that give a user or user group specific permissions on a context entity and its related entities.GET /permissionGrantsendpoint now exists to retrieve a paginated list of permission grants. Requires administrator role.POST /permissionGrantsendpoint now exists to create a new permission grant. Requires administrator role.GET /permissionGrants/{permissionGrantId}endpoint now exists to retrieve a specific permission grant by ID. Requires administrator role.DELETE /permissionGrants/{permissionGrantId}endpoint now exists to delete a specific permission grant by ID. Requires administrator role.PermissionGrantEntityTypeschema now exists to enumerate entity types that can be referenced in permission grants.PermissionGrantVerbschema now exists to enumerate permission verbs (view,create,edit,delete,manage).
0.29.0 2025-01-23
Added
GET /applicationForm/{applicationFormId}/proposalDataCsvreturns an application form in a usable csv format for making bulk uploadsapplicationFormIdis now a field onbulkUploadTasks
Changed
ApplicationFormsare no longer created during a bulk upload, and bulk uploads must now explicitly reference an existing application form on creation.
0.28.0 2025-01-08
Added
ChangemakerFieldValueBatchentities now have acreatedByattribute tracking the user who created the batch.GET /changemakerFieldValueBatchesendpoint now exists to retrieve a paginated list of changemaker field value batches.GET /changemakerFieldValueBatches/:batchIdendpoint now exists to retrieve a specific changemaker field value batch by ID.GET /changemakerFieldValuesendpoint now exists to retrieve a paginated list of changemaker field values with optional filtering bychangemakerFieldValueBatchandchangemaker.GET /changemakerFieldValues/:fieldValueIdendpoint now exists to retrieve a specific changemaker field value by ID.FieldValueBasetype now exists as a common base forProposalFieldValueandChangemakerFieldValue.Changemaker.fieldsnow includesChangemakerFieldValueobjects in addition toProposalFieldValueobjects, with source-based priority determining the “gold” value per base field.
Changed
ProposalFieldValueandChangemakerFieldValueOpenAPI schemas now useallOfto extendFieldValueBase.Changemaker.fieldsOpenAPI schema now usesoneOfto accept eitherProposalFieldValueorChangemakerFieldValueitems.
0.27.0 2025-12-22
Added
ChangemakerFieldValueBatchentity type now exists to group changemaker field values that were imported together from an external source.POST /changemakerFieldValueBatchesendpoint now exists to create changemaker field value batches.ChangemakerFieldValueentity type now exists to represent field values directly associated with changemakers.POST /changemakerFieldValuesendpoint now exists to create changemaker field values.
0.26.0 2025-10-30
Added
GET /baseFieldsnow has an optionalsensitivityClassificationsparameter.GET /baseFieldsby default returns non-forbidden base fields.
0.25.5 2025-10-22
Added
BulkUploadentities now have acreatedByUserattribute.
0.25.4 2025-10-22
Fixed
POST /changemakersOpenAPI documentation was improved.
0.25.3 2025-10-22
Added
Fileentities are now decorated with adownloadUrlwhen appropriate.
Fixed
Fileis now properly documented as potentially having apresignedPostattribute.
0.25.2 2025-10-21
Added
ProposalFieldValuenow includes afileattribute if the field value references a validFile.
0.25.1 2025-10-10
Added
BulkUploadTasknow accepts a nullableattachmentsArchiveFileId.
0.25.0 2025-10-03
Added
GET /tasks/bulkUploadsnow includesBulkUploadLogentries underlogs.
0.24.1 2025-09-11
Added
BaseFieldcan now be of typefile.S3Bucketnow exists.
Fixed
BaseFieldis now properly documented as being allowed to be typecurrency.
Changed
Filenow has ans3BucketNameattribute as well as ans3Bucketattribute, and no longer has a has abucketNameorbucketRegionattribute.BulkUploadTaskno longer stores file metadata, but instead requires aproposalsDataFileIdattribute which references aFile.id.
0.23.0 2025-08-29
Changed
/presignedPostRequestshas been renamed to/filesand the returnedFileentity has additional attributes.
0.22.1 2025-08-15
Added
Proposalentities now include deepOpportunitydata.
Fixed
- The required fields associated with
UserGroupChangemakerPermission,UserGroupDataProviderPermission, andUserGroupFunderPermissionare now correctly documented. - The various opportunity permission endpoints are now correctly documented.
0.22.0 2025-07-22
- Funders now have a
isCollaborativeattribute. - Added
FunderCollaborativeMemberentity type to represent collaborators on Funders, which extend funder permissions to other funder collaborators. - Added
FunderCollaborativeInvitationentity type to represent invitations to collaborate on a funder.
0.21.0 2025-07-16
Added
- A new
PUT /users/{userId}/opportunities/{opportunityId}/permissions/{opportunityPermission}endpoint now exists - A new
DELETE /users/{userId}/opportunities/{opportunityId}/permissions/{opportunityPermission}endpoint now exists - A new
PUT /userGroups/{keycloakOrganizationId}/opportunities/{opportunityId}/permissions/{opportunityPermission}endpoint now exists - A new
DELETE /userGroups/{keycloakOrganizationId}/opportunities/{opportunityId}/permissions/{opportunityPermission}endpoint now exists
0.20.2 2025-07-10
Added
ApplicationFormFieldnow have aninstructionsattribute.
0.20.1 2025-07-10
Added
GET /proposalsnow accepts afunderquerystring filter which returns a subset of proposals based on the funder of the proposal’s opportunity.
0.20.0 2025-06-17
Changed
- The
BaseField.scopeattribute is nowBaseField.categoryand includes several additional values.
0.19.0 2025-06-17
Added
ProposalFieldValuesnow have agoodAsOfattribute.BaseFieldsnow have asensitivityClassificationattribute.
0.18.0 2025-04-28
Changed
BaseFieldsare now primary keyed on theshortCodevalue, and have had corresponding
foreign keys in theApplicationFormFieldandBaseFieldLocalizationtables updated to match.
0.17.1 2025-04-21
Added
BaseFieldsnow have avalueRelevanceHoursattribute which signal how long values associated with the base field are considered relevant.
0.17.0 2025-02-13
Changed
OpportunityandBulkUploadTasknow require afunderShortCodeon creation.
0.16.8 2025-02-13
Added
- Add and remove fiscal sponsors using
PUTandDELETEon/changemakers/{changemakerId}/fiscalSponsors/{fiscalSponsorChangemakerId}. - There is now a type
ShallowChangemakeravailable. Changemakernow has afiscalSponsorsattribute, a list ofShallowChangemaker.
0.16.7 2025-02-05
Added
- Manage user-funder permissions using
PUT, andDELETEon/user/{keycloakUserId}/funders/{funderShortCode}/permissions/{permission}. - Manage user-data-provider permissions using
PUT, andDELETEon/user/{keycloakUserId}/funders/{funderShortCode}/permissions/{permission}. - Manage user-group-changemaker permissions using
PUT, andDELETEon/userGroups/{keycloakOrganizationId}/changemaker/{changemakerId}/permissions/{permission}. - Manage user-group-data-provider permissions using
PUT, andDELETEon/userGroups/{keycloakOrganizationId}/dataProvider/{dataProviderShortCode}/permissions/{permission} - Manage user-group-funder permissions using
PUT, andDELETEon/userGroups/{keycloakOrganizationId}/funders/{funderShortCode}/permissions/{permission} - Manage user-funder permissions using
PUT, andDELETEon/user/{keycloakUserId}/funders/{funderShortCode}/permissions/{permission}. - Update changemaker attributes using
PATCHon/changemakers/{changemakerId}. This was available in the API starting 2025-01-30 under the previous version number.
0.16.6 2024-12-23
Changed
Changemakernow haskeycloakOrganizationId, the UUID in Keycloak for the related Organization.
0.16.5 2024-12-23
Changed
Fundernow haskeycloakOrganizationId, the UUID in Keycloak for the related Organization.
0.16.4 2024-12-23
Changed
- Upgraded to use OpenAPI Specification 3.1.
DataProvidertype now haskeycloakOrganizationId, the UUID in Keycloak for the related Organization.
Added
- Manage user changemaker permissions using
GET,PUT, andDELETEon/user/{keycloakUserId}/changemakers/{changemakerId}/permissions/{permission}.
0.16.3 2024-12-02
Fixed
Changemakertype was missing the fields property.
0.16.2 2024-11-12
Fixed
Usertype had an inaccurate specification regarding permission attributes.
0.16.1 2024-11-07
Changed
BulkUploadis nowBulkUploadTask.GET /bulkUploadandPOST /bulkUploadare nowGET /tasks/bulkUploadandPOST /tasks/bulkUpload.
Future jobs for the graphile-worker will be routed undertasksas well.
0.16.0 2024-11-7
Added
Usernow has apermissionsattribute which includes information about various granted permissions.
0.15.1 2024-10-28
Fixed
SourceBundleis now present in the swagger spec.GET /sourcesis now correctly documented as returning aSourceBundle.
0.15.0 2024-10-14
Changed
Organizationis nowChangemaker.OrganizationProposalis nowChangemakerProposal.
0.14.0 2024-10-11
Changed
Users.idno longer exists;keycloakUserIdis now the primary identifier of any givenUser.Proposal.createdByis now a UUID reference to the creator’skeycloakUserId.ProposalVersion.createdByis now a UUID reference to the creator’skeycloakUserId.BulkUpload.createdByis now a UUID reference to the creator’skeycloakUserId.
0.13.0 2024-09-26
Changed
authenticationIdis nowkeycloakUserId(a UUID) in theUserentity, as well as for any endpoints that allowed filtering byauthenticationId.
0.12.4 2024-09-19
Added
createdByis now an attribute ofProposalVersion.
0.12.3 2024-09-19
Added
- New
Funderentity type with correspondingPUTandGETendpoints. - New
DataProviderentity type with correspondingPUTandGETendpoints. - New
Sourceentity type with correspondingPUTandGETendpoints. sourceIdis now an attribute ofBulkUpload.sourceIdis now an attribute ofProposalVersion.
0.11.0 2024-05-20
Added
- The
BulkUploadBundleentity now exists, and the/bulkUploadsendpoint is properly documented to return that type.
Fixed
- Several read-only fields were improperly defined, resulting in improper SDK results.
WritablePresignedPostRequestwill no longer require a populatedpresignedPost.
Changed
- Created a new
PresignedPostentity type instead of directly embedding the definition inPresignedPostRequest.
0.10.0 2024-05-03
Removed
- The
OrganizationsattributeemployerIdentificationNumberhas been removed.
0.9.1 2024-05-03
Changed
- Several fields that were marked as optional are now properly marked as required.
0.9.0 2024-05-02
Added
BaseFieldnow has ascopeattribute.
Changed
- The GET
/opportunitiesendpoint now returns anOpportunityBundleand accepts pagination parameters. - Added a new
OrganizationattributetaxIdwhich contains the same value asemployerIdentificationNumber. - Deprecated the
OrganizationsattributeemployerIdentificationNumber. Please update your clients to usetaxIdinstead.
0.8.0 2024-04-23
Added
- The
BulkUploadentity now has acreatedByattribute. - The
Proposalentity now has acreatedByattribute. - The
/proposalsendpoint now supports acreatedByfilter. - The
Usertype now exists. - The GET
/usersendpoint now exists.
Changed
- The
/bulkUploadsendpoint will now only return bulk uploads associated with the current user. - The
/proposalsendpoint will now only return proposals associated with the current user.
0.7.0 2024-04-04
Changed
- The
data_typefield of theBaseFieldentity is now an enum of acceptable types. - The
ProposalFieldValueentity now has ais_validfield.
0.6.0 2024-03-29
Changed
- The
/applicationFormsendpoint now returns anApplicationFormBundle. - The
/applicationFormsendpoint now returns deepApplicationFormobjects. - The
/applicationForms/:idendpoint now returns a deep `ApplicationForm object.
Removed
- The
/applicationForms/:idendpoint no longer has aincludeFieldsquery parameter, as it always includes deep fields.
0.5.0 – 2024-03-27
Added
- The
OrganizationProposalentity now exists. - The
OrganizationProposalBundleentity now exists. - It is now possible to filter
/proposalsin terms of organization. - It is now possible to filter
/organizationsin terms of proposal.
0.4.0 – 2024-02-29
Removed
- The
Applicantentity no longer exists. - All
/applicants/*endpoints are removed. - The
applicantIdattribute ofProposalhas been removed.
0.3.1 – 2024-02-29
Added
- The
Organizationentity now exists. - The GET
/organizationsendpoint now exists. - The GET
/organizations:idendpoint now exists. - The POST
/organizationsendpoint now exists.
0.3.0 – 2023-05-03
Changed
- The
GETandPOST/canonicalFieldsendpoints have been renamed to/baseFields. - The
CanonicalFieldschema type has been renamed toBaseField. - The
ApplicationFormField.canonicalFieldIdattribute of the has been renamed toApplicationFormField.baseFieldId.
0.2.0 – 2023-04-20
Changed
- The
GET /proposalsendpoint now returns a newBundlewrapper around response data.
This content was automatically generated from GitHub. Any edits made on WordPress will be lost.