Skip to content

chore: add OP API request as debug log#991

Merged
saw-jan merged 3 commits intorelease/2.11from
chore/log-op-api-request
Mar 10, 2026
Merged

chore: add OP API request as debug log#991
saw-jan merged 3 commits intorelease/2.11from
chore/log-op-api-request

Conversation

@saw-jan
Copy link
Collaborator

@saw-jan saw-jan commented Mar 10, 2026

Description

Every API requests to OpenProject is added as debug logs for better observability.

{
    "reqId":"dcttsigDOs1GDqtpsMmU",
    "level":0,
    "time":"2026-03-10T08:33:42+00:00",
    "remoteAddr":"172.28.0.5",
    "user":"admin",
    "app":"integration_openproject",
    "method":"GET",
    "url":"/ocs/v2.php/apps/integration_openproject/api/v1/projects",
    "scriptName":"/ocs/v2.php",
    "message":"OpenProject API request: {\"method\":\"GET\",\"url\":\"https:\\/\\/openproject.local\\/api\\/v3\\/work_packages\\/available_projects?filters=%5B%7B%22storageUrl%22%3A%7B%22operator%22%3A%22%3D%22%2C%22values%22%3A%5B%22http%3A%5C%2F%5C%2Fnextcloud.local%22%5D%7D%2C%22userAction%22%3A%7B%22operator%22%3A%22%26%3D%22%2C%22values%22%3A%5B%22file_links%5C%2Fmanage%22%2C%22work_packages%5C%2Fcreate%22%5D%7D%7D%5D&pageSize=100\",\"headers\":{\"Authorization\":\"[REDACTED]\",\"User-Agent\":\"Nextcloud OpenProject integration\"},\"body\":null}",
    "userAgent":"Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/145.0.0.0 Safari/537.36",
    "version":"32.0.6.1",
    "data":{"app":"integration_openproject"}
}
{
    "reqId":"sMHT45vSsdekcU0CjaWh",
    "level":0,
    "time":"2026-03-10T08:35:35+00:00",
    "remoteAddr":"172.28.0.5",
    "user":"admin",
    "app":"integration_openproject",
    "method":"POST",
    "url":"/ocs/v2.php/apps/integration_openproject/api/v1/create/work-packages",
    "scriptName":"/ocs/v2.php",
    "message":"OpenProject API request: {\"method\":\"POST\",\"url\":\"https:\\/\\/openproject.local\\/api\\/v3\\/work_packages\",\"headers\":{\"Authorization\":\"[REDACTED]\",\"User-Agent\":\"Nextcloud OpenProject integration\",\"Content-Type\":\"application\\/json\"},\"body\":{\"_links\":{\"type\":{\"href\":\"\\/api\\/v3\\/types\\/1\",\"title\":\"Task\"},\"status\":{\"href\":\"\\/api\\/v3\\/statuses\\/1\",\"title\":\"New\"},\"assignee\":{\"href\":null,\"title\":null},\"project\":{\"href\":\"\\/api\\/v3\\/projects\\/1\",\"title\":\"Demo project\"}},\"subject\":\"test\",\"description\":{\"format\":\"markdown\",\"raw\":\"\",\"html\":\"\"}}}",
    "userAgent":"Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/145.0.0.0 Safari/537.36",
    "version":"32.0.6.1",
    "data":{"app":"integration_openproject"}
}

Related Issue or Workpackage

  • Fixes

Screenshots (if appropriate):

Types of changes

  • Bug fix (non-breaking change which fixes an issue)
  • New feature (non-breaking change which adds functionality)
  • Breaking change (fix or feature that would cause existing functionality to change)
  • Tests only (no source changes)

Checklist:

  • Code changes
  • Unit tests added
  • Acceptance tests added
  • Updated CHANGELOG.md file

@saw-jan saw-jan self-assigned this Mar 10, 2026
saw-jan added 2 commits March 10, 2026 14:22
Signed-off-by: Saw-jan <saw.jan.grg3e@gmail.com>
Signed-off-by: Saw-jan <saw.jan.grg3e@gmail.com>
@saw-jan saw-jan force-pushed the chore/log-op-api-request branch from 7bca62c to a044cf2 Compare March 10, 2026 08:37
Signed-off-by: Saw-jan <saw.jan.grg3e@gmail.com>
@github-actions
Copy link

JS Code Coverage

Coverage after merging chore/log-op-api-request into release/2.11 will be
90.97%
Coverage Report
FileStmtsBranchesFuncsLinesUncovered Lines
src
   adminSettings.js0%0%0%0%1, 1, 10–19, 2–9
   bootstrap.js0%0%0%0%1, 1, 10–12, 2–9
   dashboard.js0%0%0%0%1, 1, 10–19, 2–9
   fileActions.js0%0%0%0%1, 1, 10–19, 2, 20–23, 3–9
   personalSettings.js0%0%0%0%1, 1, 10–19, 2–9
   projectTab.js0%0%0%0%1, 1, 10–19, 2, 20–29, 3, 30–39, 4, 40–49, 5, 50, 6–9
   reference.js0%0%0%0%1, 1, 10–19, 2, 20–29, 3, 30–39, 4, 40–45, 5–9
   utils.js85.71%62.50%66.67%87.41%12–14, 142–143, 15–20, 23–32
src/api
   endpoints.js100%100%100%100%
   settings.js64.71%100%0%73.33%10–11, 14–15
src/components
   AdminSettings.vue96.33%96.03%95.88%96.41%1005, 1008–1014, 1044–1045, 1049–1050, 1053–1054, 1058–1059, 1069–1074, 1146–1148, 1160–1163, 1176–1178, 1202–1205, 1239–1247, 1304–1306, 1341–1344, 1380–1382, 1402–1405, 724, 835–837, 992–994
   ErrorLabel.vue100%100%100%100%
   OAuthConnectButton.vue91.85%75%100%93.28%64–69, 72–76
   PersonalSettings.vue92.02%95.65%90%91.71%133–134, 144–149, 152–161
src/components/admin
   FieldValue.vue100%100%100%100%
   FormAuthMethod.vue98.12%96.88%100%98.12%222–224, 247–250
   FormHeading.vue100%100%100%100%
   FormOpenProjectHost.vue98.90%95%100%99.35%175–177, 287
   TermsOfServiceUnsigned.vue100%100%100%100%
   TextInput.vue100%100%100%100%
src/components/icons
   ClippyIcon.vue100%100%100%100%
   OpenProjectIcon.vue100%100%100%100%
src/components/settings
   CheckBox.vue100%100%100%100%
   ErrorNote.vue100%100%100%100%
   SettingsTitle.vue96.91%85.71%100%97.67%51–53
src/components/tab
   EmptyContent.vue97.49%91.30%100%98.24%107–111
   SearchInput.vue95.31%92.96%94.74%95.78%138–139, 192, 203–208, 267–269, 285–287, 291–296
   WorkPackage.vue86.22%72.50%93.33%87.62%107–116, 129–131, 142–146, 156–158, 176–182, 220, 220–225, 225, 225–236, 81–82
src/constants
   appID.js100%100%100%100%
   links.js100%100%100%100%
   messages.js100%100%100%100%
src/filesPlugin
   filesPlugin.js0%0%0%0%1, 1, 10, 100, 11–19, 2, 20–29, 3, 30–39, 4, 40–49, 5, 50–59, 6, 60–69, 7, 70–79, 8, 80–89, 9, 90–99
   filesPluginLessThan28.js0%0%0%0%1, 1, 10–19, 2, 20–29, 3, 30–39, 4, 40–49, 5, 50–59, 6, 60–69, 7, 70, 8–9
src/utils
   workpackageHelper.js89.84%82.14%88.89%92.15%100–102, 156–157, 23–27, 34, 34, 36, 36, 50–52, 54, 54, 54–56, 97–99
src/views
   CreateWorkPackageModal.vue94.18%86.32%90.48%95.43%367–372, 375, 391, 508–511, 516–521, 526–531, 537–540, 543, 559, 559, 600–604, 614–616, 639–640, 648–650, 679–681, 703–705, 714–718
   Dashboard.vue92.96%92.86%82.61%93.77%120–125, 134, 144, 147, 158–160, 214–217, 220–221, 228–232, 67
   LinkMultipleFilesModal.vue99.14%97.56%100%99.32%157–159
   ProjectsTab.vue94.06%92.45%93.33%94.33%100–101, 107–109, 129, 140–141, 175–185, 234–236, 98–99

@github-actions
Copy link

PHP Code Coverage

Coverage after merging chore/log-op-api-request into release/2.11 will be
66.75%
Coverage Report
FileStmtsBranchesFuncsLinesUncovered Lines
integration_openproject/server/apps/integration_openproject/lib
   Capabilities.php0%100%0%0%24, 31–40
   OIDCClientMapper.php0%100%0%0%29, 40–49, 52
   TokenEventFactory.php100%100%100%100%
integration_openproject/server/apps/integration_openproject/lib/AppInfo
   Application.php36.59%100%50%35.53%105–107, 110–114, 116–121, 123–124, 127, 132–133, 135–138, 140, 142, 144, 148–151, 153–164, 166, 169, 173, 177–179, 212
integration_openproject/server/apps/integration_openproject/lib/BackgroundJob
   RemoveExpiredDirectUploadTokens.php0%100%0%0%28, 30–32, 41–42
integration_openproject/server/apps/integration_openproject/lib/Controller
   ConfigController.php75.12%100%64.71%75.56%114, 151–152, 154, 156–158, 160–163, 166–167, 169, 194, 198–200, 442–444, 446–448, 497, 541–543, 577–581, 592, 606–609, 617, 621–624, 660, 663–678, 695–700, 702–703, 705–707, 710, 712–728, 742–745, 747–751
   DirectDownloadController.php0%100%0%0%33–35, 50–52, 54–61
   DirectUploadController.php71.03%100%100%70.21%117–119, 162–164, 175, 179–182, 184, 194, 201, 217–219, 221–222, 225–230, 233, 235, 245–247, 253–255, 263–265, 280–282, 301, 306, 312
   FilesController.php86.99%100%83.33%87.18%178–179, 241, 250, 267–270, 275–277, 282–284, 293
   OpenProjectAPIController.php80.51%100%82.35%80.34%107, 146, 193–195, 198–205, 207–211, 213, 232, 257, 322, 372, 392, 439, 464–466, 469–473, 475, 66
   OpenProjectController.php96.45%100%80%96.95%241–245
integration_openproject/server/apps/integration_openproject/lib/Dashboard
   OpenProjectWidget.php0%100%0%0%101, 108–109, 111–116, 118–122, 124–126, 129–140, 61–66, 73, 80, 87, 94
integration_openproject/server/apps/integration_openproject/lib/Exception
   OpenprojectAvatarErrorException.php100%100%100%100%
   OpenprojectErrorException.php100%100%100%100%
   OpenprojectFileNotUploadedException.php100%100%100%100%
   OpenprojectGroupfolderSetupConflictException.php100%100%100%100%
   OpenprojectResponseException.php100%100%100%100%
   OpenprojectUnauthorizedUserException.php0%100%0%0%21
integration_openproject/server/apps/integration_openproject/lib/Listener
   BeforeGroupDeletedListener.php100%100%100%100%
   BeforeNodeInsideOpenProjectGroupfilderChangedListener.php0%100%0%0%46–48, 52–55, 57, 59, 62–63, 65, 67–70, 72–75, 77–79
   BeforeUserDeletedListener.php0%100%0%0%30, 37–38, 40–43, 45
   LoadAdditionalScriptsListener.php0%100%0%0%37–38, 46–47, 49, 51–52, 54
   LoadSidebarScript.php65.91%100%100%64.29%105, 77–88, 95, 98
   OpenProjectReferenceListener.php0%100%0%0%45–47, 54–55, 57, 59–60, 62–74
   TermsOfServiceEventListener.php0%100%0%0%41–42, 47–48, 50–51, 53–55, 58–62
   UserChangedListener.php0%100%0%0%34, 41–42, 45–50, 53
integration_openproject/server/apps/integration_openproject/lib/Migration
   Version2001Date20221213083550.php0%100%0%0%30, 40–48, 50–58, 60–62, 64
   Version20100Date20250820101358.php0%100%0%0%38, 47–53, 56
   Version2310Date20230116153411.php0%100%0%0%29, 32–35, 37–62, 64–65, 67
   Version2400Date20230504144300.php0%100%0%0%30, 40–43
   Version2640Date20240628114301.php0%100%0%0%35, 47–49, 52–53, 56
   Version2900Date20250718065820.php0%100%0%0%23, 35–38, 40–41, 43–44, 47
integration_openproject/server/apps/integration_openproject/lib/Reference
   WorkPackageReferenceProvider.php51.67%100%25%58.33%100–101, 104, 108, 142, 150–151, 159, 37, 44, 51, 58–60, 87, 93–96, 99
integration_openproject/server/apps/integration_openproject/lib/Search
   OpenProjectSearchProvider.php0%100%0%0%100–102, 104–106, 109–110, 112–113, 116–125, 127–131, 52–55, 62, 69, 77, 79, 82, 89–90, 93–97, 99
   OpenProjectSearchResultEntry.php100%100%100%100%
integration_openproject/server/apps/integration_openproject/lib/Service
   DatabaseService.php42.31%100%60%40.43%108–112, 114, 63–76, 78–85
   DirectDownloadService.php88.46%100%100%87.50%62–63, 65
   DirectUploadService.php42.86%100%66.67%40%101, 62–65, 67–75, 95
   OauthService.php0%100%0%0%100–101, 40–42, 51–58, 60–66, 75–83, 94–99
   OpenProjectAPIService.php74.55%100%76.06%74.42%1020–1026, 1028–1035,

@saw-jan saw-jan marked this pull request as ready for review March 10, 2026 08:56
@saw-jan saw-jan added the backport PR needs backporting label Mar 10, 2026
@saw-jan saw-jan merged commit 5421da2 into release/2.11 Mar 10, 2026
10 checks passed
@saw-jan saw-jan deleted the chore/log-op-api-request branch March 10, 2026 09:42
saw-jan added a commit that referenced this pull request Mar 10, 2026
* chore: add OP API request as debug log

Signed-off-by: Saw-jan <saw.jan.grg3e@gmail.com>

* chore: add changelog entry

Signed-off-by: Saw-jan <saw.jan.grg3e@gmail.com>

* fix: use builtin exception class

Signed-off-by: Saw-jan <saw.jan.grg3e@gmail.com>

---------

Signed-off-by: Saw-jan <saw.jan.grg3e@gmail.com>
@saw-jan saw-jan mentioned this pull request Mar 10, 2026
8 tasks
saw-jan added a commit that referenced this pull request Mar 11, 2026
* chore: add OP API request as debug log

Signed-off-by: Saw-jan <saw.jan.grg3e@gmail.com>

* chore: add changelog entry

Signed-off-by: Saw-jan <saw.jan.grg3e@gmail.com>

* fix: use builtin exception class

Signed-off-by: Saw-jan <saw.jan.grg3e@gmail.com>

---------

Signed-off-by: Saw-jan <saw.jan.grg3e@gmail.com>
saw-jan added a commit that referenced this pull request Mar 12, 2026
* fix: handle op projects whose parent project is unknown (#988)

* fix: hanlding undisclosed and non-existing project parent



* test: fix vue unit tests



* test: add vue unit tests



* chore: add changelog entry



---------

Signed-off-by: Saw-jan <saw.jan.grg3e@gmail.com>

* chore: add OP API request as debug log (#991)

* chore: add OP API request as debug log

Signed-off-by: Saw-jan <saw.jan.grg3e@gmail.com>

* chore: add changelog entry

Signed-off-by: Saw-jan <saw.jan.grg3e@gmail.com>

* fix: use builtin exception class

Signed-off-by: Saw-jan <saw.jan.grg3e@gmail.com>

---------

Signed-off-by: Saw-jan <saw.jan.grg3e@gmail.com>

* fix: use https NC url in OP API requests (#992)

* fix: use https NC url in OP API requests

Signed-off-by: Saw-jan <saw.jan.grg3e@gmail.com>

* chore: add changelog entry

Signed-off-by: Saw-jan <saw.jan.grg3e@gmail.com>

* test: add phpunit test

Signed-off-by: Saw-jan <saw.jan.grg3e@gmail.com>

---------

Signed-off-by: Saw-jan <saw.jan.grg3e@gmail.com>

* chore: update php dev dependencies (#971)

* chore: update php dev packages

Signed-off-by: Saw-jan <saw.jan.grg3e@gmail.com>

* chore: fix lint errors

Signed-off-by: Saw-jan <saw.jan.grg3e@gmail.com>

* chore: test with php 8.4

Signed-off-by: Saw-jan <saw.jan.grg3e@gmail.com>

* ci: remove unwanted nextcloud env

Signed-off-by: Saw-jan <saw.jan.grg3e@gmail.com>

* ci: fix postgress db service

Signed-off-by: Saw-jan <saw.jan.grg3e@gmail.com>

* test: accept 500 error on invalid json

Signed-off-by: Saw-jan <saw.jan.grg3e@gmail.com>

---------

Signed-off-by: Saw-jan <saw.jan.grg3e@gmail.com>

---------

Signed-off-by: Saw-jan <saw.jan.grg3e@gmail.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

backport PR needs backporting

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants