WIP: feat: DTF's Goteo v4 API #1

Draft
daniel.subiabre wants to merge 104 commits from feat/dtf-api into main
104 Commits
Author SHA1 Message Date
daniel.subiabre 302464e01e feat: update ProjectCreationDto categories and themes input
PHPUnit / phpunit (push) Canceled after 0s
PHP CS Fixer / php-cs-fixer (pull_request) Canceled after 0s
2026-10-19 15:36:25 +02:00
daniel.subiabre 4d348e1db7 Merge branch 'main' into feat/dtf-api 2026-10-08 16:30:31 +02:00
Daniel Subiabre García b4f1281e9c Merge pull request #3 from goteo/develop
chore: sync main to open-core develop
2026-10-08 16:29:14 +02:00
Daniel Subiabre García dc23606b42 Merge branch 'main' into develop 2026-10-08 16:18:49 +02:00
daniel.subiabre ac47aec378 feat: Themes (#257)
* feat: add trait to unify get by id or slug logic

* feat: add Theme resource

* fix: categories and themes

* feat: update api docs for projects to themes relationship

* feat: update doctrine relationship of projects to themes

* feat: add v3 categories to v4 themes pumping during projects pumping
2026-10-08 13:02:07 +02:00
daniel.subiabre 14ee28be4f [feat] Project reviews (#177)
* feat: start project reviews entity

* feat: add review areas entity

* feat: add review comments entity

* fix: code styles improvements by php-cs-fixer

* feat: expose project review resources in the API

* feat: add timestampt to review resources

* feat: add SQL migration

* fix: update ProjectReview API docs and operations

* feat: refactor ProjectsListener to dedicated project status listener

* fix: make default review area risk high

* feat: add ReviewService for creating default project reviews

* fix: renamed timestampt entity traits

* fix: update doctrine migration

* feat: test for release date to be set greater than today's start

* feat: add test for project campaign review

* fix: update person and organization patch validations

* fix: test if review entity is truly persisted

* fix: bad start statuses in project tests

* fix: ProjectStatusListener not persisting side effect data

* fix: centralize project status change side-effects processing in ProjectService

* fix: small review persistence tweaks

* feat: allow only concerned users to see and edit review areas

* feat: apply validations and security for concerned users to review comments
2026-10-07 13:31:44 +02:00
daniel.subiabre 86ba2c4fe4 fix: HTTPS in OAuth2 redirect_uri (#255)
* feat: remove router schema force via config

* fix: configure trusted proxies via env vars

* fix: typo in var description
2026-10-05 15:43:20 +02:00
daniel.subiabre 2dec0d1db5 fix: HTTP (!s) scheme in callback for OAuth2 providers (#254)
* fix: bad path to oauth2 provider logo

* feat: set https scheme on router on prod context

* feat: configure oauth2 jwts ttl via env var

* fix: bad nesting of access_token_ttl yaml option
2026-10-02 16:03:20 +02:00
daniel.subiabre 4761bc4544 Merge branch 'main' into feat/dtf-api
PHPUnit / phpunit (push) Canceled after 0s
PHP CS Fixer / php-cs-fixer (pull_request) Canceled after 0s
2026-10-02 03:27:00 +02:00
Daniel Subiabre García e1b7fec3ba chore: sync main to open-core develop (#2)
* fix: upgrade goteo/benzina to 0.6

* feat: increase Nominatim cache TTL

* fix: allow long addresses for territory data

* fix: build project addresses from goteo 3 territory fields

* fix: handle empty strings for video sources

* fix: update project drafts deadline to 2026

* feat: split project description into 4 fields

* feat: bump doctrine related dependencies

* feat: bump symfony related dependencies

* feat: make categories work on idOrSlug

* fix: allow filtering on project descBrief property

* fix: update constraints on project update to allow optional updates of properties

* fix: update Projects test suite to new project shape

* fix: order of DROP operations in migration Version20260813171902

* fix: move accounting balance and checkout to supports listeners to onFlush events

* fix: bad order of filter safeguards

* chore: code style by php-cs-fixer

* fix: prevent uninitialized fields on api resource from breaking AccountingVoter

* fix: small bug preventing code improvements on Accounting api resource

* feat: add cover property on ProjectReward resource

* feat: add cover property to Project resources

* feat: use video cover for project cover

* feat: add migration for property cover on project and rewards

* fix: small improvements on UserOwned helpers

* feat: add territory to project creation

* feat: mark creation fields as required

* feat: add CollaborationCandidacy resource

* fix: update old validations access of new types

* feat: add validation for charges targetting projects not in campaign

* feat: validate new collaboration candicacies are to open collaborations

* feat: prevent future object access issues in SameProjectRewardChargeValidator

* fix: return void on succesfull delete operations

* fix: force set of isFinite property

* feat: allow to filter ProjectBudgetItem by type and deadline

* feat: remove example values from .env

* feat: add testing encryption keys

* feat: make project in BudgetItem body required

* feat: add testing encryption keys to actions

* feat: add collaborations property to ProjectApiResource

* feat: Update Users PATCH body (#246)

* feat: move UserSignupDto to Dto\User namespace

* fix: bad parsing of INSTR by ApiPlatform pagination layer

* fix: make User resources be processed by dedicated update processor

* fix: specify authentication usage of UserSignupDto::password property

* feat: improve non-crawlable URI detection for ScoutService

* feat: add "org" to Links with known organizations behind links

* feat: map raw uri strings to full Link objects

* fix: bad loading of existing user data in UserStateProcessor

* feat: add NotExisting validator

* feat: use NotExisting constraint on Users handle, email, Projects titles and Tipjar names

* fix: check for existing node item in URI rel detection

* fix: make app:oauth2-server:consent-client true by default

* feat: bump league/oauth2-server-bundle to 1.2.2

* feat: add UserConverter decorator to have league/oauth2-server JWT's sub have User id instead of handle

* fix: specify OAuth2 and  separate server from client utilities

* fix: make app_user_provider use ID instead of handle

* feat: add explaining comment to doctrine_encryption.key_id

* feat: add status to reward claims

* feat: make default RewardClaim entity status in_pending

* feat: add shorter check for ownership of projects

* feat: allow to modify status of reward claims

* feat: add shipping address to reward claims

* fix: remove requirement of status in claim update op

* fix: update filters and remove obsolete attributes from ProjectRewardClaim resource

* feat: update DB layer for project reward claims

* fix: code style issues by PHP-CS-Fixer

* feat: add DoctrineLoggablePumpTrait to remove Gedmo Loggable event listener

* fix: update legacy ref to FileUriException

* feat: pump reward claim status and shipping address from v3 records

* fix: update pumps batch sizes and injected dependencies

* feat: pump user roles

* feat: add true image cover retrieval and leave video as fallback for ProjectsPump

* feat: pump project collaborations

* feat: allow cascading of collaborations

* fix: set isFulfilled of collaboration

* fix: link collaboration to in-pumping project

* fix: add trailing comma to list of fulfilling statuses

* test: update PHPUnit CI to use bin/phpunit instead of action

* feat: set memory_limit of PHPUnit run on CI to 128M

* fix: add user avatar to user pump processing

* fix: set invests batch size to 1 to avoid support duplicates on insert

* Merge pull request #253 from goteo/fix/pumping-bugs

fix: Pumping bugs
2026-10-02 03:26:21 +02:00
daniel.subiabre 8053e8f800 feat: update pumping to DTFs 2026-10-02 03:25:04 +02:00
daniel.subiabre 317dfc4e29 Merge branch 'main' into feat/dtf-api 2026-10-01 16:26:25 +02:00
Daniel Subiabre García 0007c6b9b1 chore: sync main to core develop (#1)
* fix: upgrade goteo/benzina to 0.6

* feat: increase Nominatim cache TTL

* fix: allow long addresses for territory data

* fix: build project addresses from goteo 3 territory fields

* fix: handle empty strings for video sources

* fix: update project drafts deadline to 2026

* feat: split project description into 4 fields

* feat: bump doctrine related dependencies

* feat: bump symfony related dependencies

* feat: make categories work on idOrSlug

* fix: allow filtering on project descBrief property

* fix: update constraints on project update to allow optional updates of properties

* fix: update Projects test suite to new project shape

* fix: order of DROP operations in migration Version20260813171902

* fix: move accounting balance and checkout to supports listeners to onFlush events

* fix: bad order of filter safeguards

* chore: code style by php-cs-fixer

* fix: prevent uninitialized fields on api resource from breaking AccountingVoter

* fix: small bug preventing code improvements on Accounting api resource

* feat: add cover property on ProjectReward resource

* feat: add cover property to Project resources

* feat: use video cover for project cover

* feat: add migration for property cover on project and rewards

* fix: small improvements on UserOwned helpers

* feat: add territory to project creation

* feat: mark creation fields as required

* feat: add CollaborationCandidacy resource

* fix: update old validations access of new types

* feat: add validation for charges targetting projects not in campaign

* feat: validate new collaboration candicacies are to open collaborations

* feat: prevent future object access issues in SameProjectRewardChargeValidator

* fix: return void on succesfull delete operations

* fix: force set of isFinite property

* feat: allow to filter ProjectBudgetItem by type and deadline

* feat: remove example values from .env

* feat: add testing encryption keys

* feat: make project in BudgetItem body required

* feat: add testing encryption keys to actions

* feat: add collaborations property to ProjectApiResource

* feat: Update Users PATCH body (#246)

* feat: move UserSignupDto to Dto\User namespace

* fix: bad parsing of INSTR by ApiPlatform pagination layer

* fix: make User resources be processed by dedicated update processor

* fix: specify authentication usage of UserSignupDto::password property

* feat: improve non-crawlable URI detection for ScoutService

* feat: add "org" to Links with known organizations behind links

* feat: map raw uri strings to full Link objects

* fix: bad loading of existing user data in UserStateProcessor

* feat: add NotExisting validator

* feat: use NotExisting constraint on Users handle, email, Projects titles and Tipjar names

* fix: check for existing node item in URI rel detection

* fix: make app:oauth2-server:consent-client true by default

* feat: bump league/oauth2-server-bundle to 1.2.2

* feat: add UserConverter decorator to have league/oauth2-server JWT's sub have User id instead of handle

* fix: specify OAuth2 and  separate server from client utilities

* fix: make app_user_provider use ID instead of handle

* feat: add explaining comment to doctrine_encryption.key_id

* feat: add status to reward claims

* feat: make default RewardClaim entity status in_pending

* feat: add shorter check for ownership of projects

* feat: allow to modify status of reward claims

* feat: add shipping address to reward claims

* fix: remove requirement of status in claim update op

* fix: update filters and remove obsolete attributes from ProjectRewardClaim resource

* feat: update DB layer for project reward claims

* fix: code style issues by PHP-CS-Fixer

* feat: add DoctrineLoggablePumpTrait to remove Gedmo Loggable event listener

* fix: update legacy ref to FileUriException

* feat: pump reward claim status and shipping address from v3 records

* fix: update pumps batch sizes and injected dependencies

* feat: pump user roles

* feat: add true image cover retrieval and leave video as fallback for ProjectsPump

* feat: pump project collaborations

* feat: allow cascading of collaborations

* fix: set isFulfilled of collaboration

* fix: link collaboration to in-pumping project

* fix: add trailing comma to list of fulfilling statuses

* test: update PHPUnit CI to use bin/phpunit instead of action

* feat: set memory_limit of PHPUnit run on CI to 128M

* fix: add user avatar to user pump processing

* fix: set invests batch size to 1 to avoid support duplicates on insert

* Merge pull request #253 from goteo/fix/pumping-bugs

fix: Pumping bugs
2026-10-01 16:26:01 +02:00
daniel.subiabre 5d878f2c4c Merge pull request #253 from goteo/fix/pumping-bugs
fix: Pumping bugs
2026-10-01 16:22:42 +02:00
daniel.subiabre 07b0b47e92 Merge pull request #252 from goteo/fix/missing-user-avatar-pumping
fix: missing User's avatar pumping
2026-09-30 17:40:38 +02:00
daniel.subiabre 7732352bb7 fix: set invests batch size to 1 to avoid support duplicates on insert 2026-09-30 17:36:42 +02:00
daniel.subiabre c3b4299097 fix: add user avatar to user pump processing 2026-09-30 17:36:27 +02:00
daniel.subiabre a2371240c2 Merge pull request #251 from goteo/feat/pump-user-roles
feat: update Pumps
2026-09-30 16:51:29 +02:00
daniel.subiabre deef8ad171 feat: set memory_limit of PHPUnit run on CI to 128M 2026-09-30 16:42:48 +02:00
daniel.subiabre 3d0925ca0f test: update PHPUnit CI to use bin/phpunit instead of action 2026-09-30 16:33:26 +02:00
daniel.subiabre 727ddaee15 fix: add trailing comma to list of fulfilling statuses 2026-09-30 15:33:30 +02:00
daniel.subiabre e1e1604f31 fix: link collaboration to in-pumping project 2026-09-30 15:32:45 +02:00
daniel.subiabre 1bcb1f3daa fix: set isFulfilled of collaboration 2026-09-30 15:03:18 +02:00
daniel.subiabre 574b6d3ccf feat: allow cascading of collaborations 2026-09-30 14:55:13 +02:00
daniel.subiabre 10c7806ef6 feat: pump project collaborations 2026-09-30 14:32:50 +02:00
daniel.subiabre 87ccc073df feat: add true image cover retrieval and leave video as fallback for ProjectsPump 2026-09-30 14:15:09 +02:00
daniel.subiabre 74db679146 feat: pump user roles 2026-09-30 13:06:51 +02:00
daniel.subiabre dd5361c925 Merge pull request #250 from goteo/feat/update-project-rewardclaim-data
feat: Update ProjectRewardClaim data
2026-09-30 10:26:36 +02:00
daniel.subiabre 9b8911eefb fix: update pumps batch sizes and injected dependencies 2026-09-30 10:24:27 +02:00
daniel.subiabre 1f6eb4fb4d feat: pump reward claim status and shipping address from v3 records 2026-09-30 10:16:52 +02:00
daniel.subiabre 80178bb7f0 fix: update legacy ref to FileUriException 2026-09-30 09:56:26 +02:00
daniel.subiabre a328073b0f feat: add DoctrineLoggablePumpTrait to remove Gedmo Loggable event listener 2026-09-30 09:55:04 +02:00
daniel.subiabre 995fd339b7 fix: code style issues by PHP-CS-Fixer 2026-09-29 19:07:38 +02:00
daniel.subiabre 6f88f746f3 feat: update DB layer for project reward claims 2026-09-29 19:07:06 +02:00
daniel.subiabre 242755e01e fix: update filters and remove obsolete attributes from ProjectRewardClaim resource 2026-09-29 19:01:18 +02:00
daniel.subiabre 738f2ada84 fix: remove requirement of status in claim update op 2026-09-29 18:55:07 +02:00
daniel.subiabre 81a264a241 feat: add shipping address to reward claims 2026-09-29 18:54:25 +02:00
daniel.subiabre bb297c5fac feat: allow to modify status of reward claims 2026-09-29 18:13:43 +02:00
daniel.subiabre 4fedf2657b feat: add shorter check for ownership of projects 2026-09-29 17:41:31 +02:00
daniel.subiabre 412cf4daf6 feat: make default RewardClaim entity status in_pending 2026-09-29 17:17:09 +02:00
daniel.subiabre 8743c79603 feat: add status to reward claims 2026-09-29 17:01:59 +02:00
daniel.subiabre b0bc61f2f4 feat: add explaining comment to doctrine_encryption.key_id 2026-09-29 14:26:59 +02:00
daniel.subiabre ee369bc699 Merge pull request #248 from goteo/fix/update-jwt-subject
fix: Update JWT subject
2026-09-25 18:42:37 +02:00
daniel.subiabre 1699a43f97 fix: make app_user_provider use ID instead of handle 2026-09-25 18:25:29 +02:00
daniel.subiabre b5e03e285a fix: specify OAuth2 and separate server from client utilities 2026-09-25 18:04:20 +02:00
daniel.subiabre 03ff6f71e8 feat: add UserConverter decorator to have league/oauth2-server JWT's sub have User id instead of handle 2026-09-25 17:56:24 +02:00
daniel.subiabre 6b9014d73f feat: bump league/oauth2-server-bundle to 1.2.2 2026-09-25 17:47:45 +02:00
daniel.subiabre 6973e9a098 fix: make app:oauth2-server:consent-client true by default 2026-09-25 17:05:28 +02:00
daniel.subiabre 6de849ebf8 Merge branch 'main' into develop 2026-09-24 13:23:02 +02:00
daniel.subiabre 9b5b5a9350 feat: Update Users PATCH body (#246)
* feat: move UserSignupDto to Dto\User namespace

* fix: bad parsing of INSTR by ApiPlatform pagination layer

* fix: make User resources be processed by dedicated update processor

* fix: specify authentication usage of UserSignupDto::password property

* feat: improve non-crawlable URI detection for ScoutService

* feat: add "org" to Links with known organizations behind links

* feat: map raw uri strings to full Link objects

* fix: bad loading of existing user data in UserStateProcessor

* feat: add NotExisting validator

* feat: use NotExisting constraint on Users handle, email, Projects titles and Tipjar names

* fix: check for existing node item in URI rel detection
2026-09-23 18:36:55 +02:00
daniel.subiabre a32cedc177 fix: default localization is english
PHPUnit / phpunit (push) Canceled after 0s
PHP CS Fixer / php-cs-fixer (pull_request) Canceled after 0s
2026-09-22 12:47:06 +02:00
daniel.subiabre 93203d8d56 feat: mark API instance as DTF's 2026-09-22 12:46:50 +02:00
daniel.subiabre 28a67064c2 Merge pull request #244 from goteo/feat/add-collaborations-to-projects
feat: add collaborations property to ProjectApiResource
2026-09-17 14:44:42 +02:00
daniel.subiabre 85aac10b6a feat: add collaborations property to ProjectApiResource 2026-09-17 14:44:04 +02:00
daniel.subiabre 7708e390bd Merge pull request #243 from goteo/fix/update-example-env-values
feat: remove example values from .env
2026-09-11 19:38:28 +02:00
daniel.subiabre 6247fd2c54 feat: add testing encryption keys to actions 2026-09-11 19:35:19 +02:00
daniel.subiabre 8ad3e79c19 feat: make project in BudgetItem body required 2026-09-11 19:30:06 +02:00
daniel.subiabre 565d01254e feat: add testing encryption keys 2026-09-11 19:25:51 +02:00
daniel.subiabre 5e96bc94e6 feat: remove example values from .env 2026-09-10 12:07:22 +02:00
daniel.subiabre 0f3b7f90ab Merge pull request #242 from goteo/feat/budget-items-missing-filters
feat: allow to filter ProjectBudgetItem by type and deadline
2026-09-08 17:01:34 +02:00
daniel.subiabre 1bc97973d5 feat: allow to filter ProjectBudgetItem by type and deadline 2026-09-08 16:54:57 +02:00
daniel.subiabre a785eaf87e Merge pull request #241 from goteo/fix/rewards-not-being-set-to-infinite
fix: force set of isFinite property
2026-09-03 16:17:46 +02:00
daniel.subiabre 4d4e7a7db6 fix: force set of isFinite property 2026-09-03 16:14:46 +02:00
daniel.subiabre 7b08eca22c Merge pull request #240 from goteo/fix/bad-return-in-delete-operations
fix: return void on succesfull delete operations
2026-09-03 15:48:01 +02:00
daniel.subiabre a48fd6d4b7 fix: return void on succesfull delete operations 2026-09-03 15:28:40 +02:00
daniel.subiabre 5527097178 Merge pull request #239 from goteo/feat/project-collaborations-apply
feat: Let Users apply to ProjectCollaborations
2026-08-26 14:30:28 +02:00
daniel.subiabre 0a887e8884 feat: prevent future object access issues in SameProjectRewardChargeValidator 2026-08-26 12:59:12 +02:00
daniel.subiabre 28c27ad4ed feat: validate new collaboration candicacies are to open collaborations 2026-08-26 12:53:39 +02:00
daniel.subiabre 40ff4b5ca4 feat: add validation for charges targetting projects not in campaign 2026-08-26 11:52:03 +02:00
daniel.subiabre 4d4de0fc7b fix: update old validations access of new types 2026-08-26 11:21:46 +02:00
daniel.subiabre 5c54d1bf5b feat: add CollaborationCandidacy resource 2026-08-26 11:03:37 +02:00
daniel.subiabre 9633cb50a6 Merge pull request #238 from goteo/feat/post-project-with-territory
feat: mark creation fields as required
2026-08-25 14:07:58 +02:00
daniel.subiabre 31af0cb72b feat: mark creation fields as required 2026-08-25 13:25:17 +02:00
daniel.subiabre 87f6670cab Merge pull request #237 from goteo/feat/post-project-with-territory
feat: add territory to project creation
2026-08-25 12:44:25 +02:00
daniel.subiabre 6d2389125f feat: add territory to project creation 2026-08-25 12:22:43 +02:00
daniel.subiabre 28e0999a0f Merge pull request #236 from goteo/feat/cover-images
feat: Cover images
2026-08-18 11:35:23 +02:00
daniel.subiabre 80ac9684ab fix: small improvements on UserOwned helpers 2026-08-18 11:14:56 +02:00
daniel.subiabre 7a6a2628d7 feat: add migration for property cover on project and rewards 2026-08-18 11:07:37 +02:00
daniel.subiabre ee61072c6a feat: use video cover for project cover 2026-08-18 11:02:36 +02:00
daniel.subiabre 5965f65c4a feat: add cover property to Project resources 2026-08-18 10:58:45 +02:00
daniel.subiabre 8b7f480e46 feat: add cover property on ProjectReward resource 2026-08-18 10:53:42 +02:00
daniel.subiabre 294c447db9 Merge pull request #235 from goteo/hotfix/bad-order-of-filter-safeguards
fix: bad order of filter safeguards
2026-08-17 18:50:06 +02:00
daniel.subiabre 4b7648dc99 fix: small bug preventing code improvements on Accounting api resource 2026-08-17 17:08:42 +02:00
daniel.subiabre 492a211d02 fix: prevent uninitialized fields on api resource from breaking AccountingVoter 2026-08-17 16:12:03 +02:00
daniel.subiabre e1c9b29593 chore: code style by php-cs-fixer 2026-08-17 15:05:18 +02:00
daniel.subiabre 4e60b980dc fix: bad order of filter safeguards 2026-08-17 15:04:10 +02:00
daniel.subiabre 5bd40405d4 Merge pull request #234 from goteo/fix/update-checkout-listeners-to-onflush-event
fix: move accounting balance and checkout to supports listeners to on…
2026-08-17 12:57:52 +02:00
daniel.subiabre 799112a3c2 fix: move accounting balance and checkout to supports listeners to onFlush events 2026-08-14 20:40:44 +02:00
daniel.subiabre 111e4ce72d Merge pull request #233 from goteo/hotfix/doctrine-migration-order
fix: order of DROP operations in migration Version20260813171902
2026-08-14 18:16:11 +02:00
daniel.subiabre 4f8b0a1361 fix: order of DROP operations in migration Version20260813171902 2026-08-14 18:13:18 +02:00
daniel.subiabre 8b93dc6e2a Merge pull request #232 from goteo/feat/bump-benzina
feat: Bump goteo/benzina
2026-08-14 16:06:49 +02:00
daniel.subiabre e9bb6aa28f fix: update Projects test suite to new project shape 2026-08-14 15:15:22 +02:00
daniel.subiabre c1d05ce47b fix: update constraints on project update to allow optional updates of properties 2026-08-14 15:14:59 +02:00
daniel.subiabre e3ef9ea80d fix: allow filtering on project descBrief property 2026-08-14 15:11:24 +02:00
daniel.subiabre 3d800b6326 feat: make categories work on idOrSlug 2026-08-13 19:35:36 +02:00
daniel.subiabre e95383774f feat: bump symfony related dependencies 2026-08-13 18:11:58 +02:00
daniel.subiabre d0e4895208 feat: bump doctrine related dependencies 2026-08-13 18:10:20 +02:00
daniel.subiabre c0fab8a098 feat: split project description into 4 fields 2026-08-13 16:47:15 +02:00
daniel.subiabre 79ef243d11 fix: update project drafts deadline to 2026 2026-08-13 15:18:26 +02:00
daniel.subiabre c6dad06cf5 fix: handle empty strings for video sources 2026-08-13 15:18:09 +02:00
daniel.subiabre 72a04d412b fix: build project addresses from goteo 3 territory fields 2026-08-12 14:44:41 +02:00
daniel.subiabre 3b3fa996f8 fix: allow long addresses for territory data 2026-08-12 14:42:00 +02:00
daniel.subiabre 995eef64fe feat: increase Nominatim cache TTL 2026-08-10 16:12:11 +02:00
daniel.subiabre 5803affb2f fix: upgrade goteo/benzina to 0.6 2026-08-10 16:12:11 +02:00