Skip to content

Activity metrics in json - #2726

Merged
fbacall merged 9 commits into
seek4science:mainfrom
AbbyGavin:activity-metrics-in-json
Sep 1, 2026
Merged

Activity metrics in json#2726
fbacall merged 9 commits into
seek4science:mainfrom
AbbyGavin:activity-metrics-in-json

Conversation

@AbbyGavin

Copy link
Copy Markdown
Contributor

Fixes #2027

This adds the view, run and download counts to the meta property of the json serialisation. It only adds them if they exist (using the same check as in _usage_info_box.erb), so these properties shouldn't appear when not necessary.

@fbacall fbacall left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

You'll also need to update the API schema to detail these changes:

it will probably need a new "type" defined for the metrics

Comment thread app/serializers/contributed_resource_serializer.rb Outdated
Comment thread test/functional/workflows_controller_test.rb Outdated

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Adds activity metrics (“Views”, “Downloads”, “Runs”) to the JSON:API resource-level meta payload for contributed resources, aligning the API output with the existing UI “Activity” panel and issue #2027.

Changes:

  • Extend ContributedResourceSerializer to emit meta.metrics.view_count, and conditionally download_count / run_count.
  • Add a functional test covering metrics presence/shape for workflows (runnable vs non-runnable).
  • Update OpenAPI schemas and refresh the public JSON example payloads to reflect the new meta.metrics field (and regenerated IDs/formatting).

Reviewed changes

Copilot reviewed 133 out of 133 changed files in this pull request and generated 2 comments.

Show a summary per file
File Description
app/serializers/contributed_resource_serializer.rb Adds meta.metrics with view/download/run counts (conditional for downloads/runs).
public/api/definitions/_schemas.yml Documents meta.metrics and adds a metrics schema.
test/functional/workflows_controller_test.rb Adds controller tests asserting metrics appear in workflow JSON output.
public/api/examples/workflowsResponse.json Regenerated example response formatting (empty data array).
public/api/examples/workflowPost.json Regenerated example IDs.
public/api/examples/workflowPatch.json Regenerated example IDs.
public/api/examples/studyResponse.json Regenerated example IDs/formatting.
public/api/examples/studyPostResponse.json Regenerated example IDs/formatting.
public/api/examples/studyPost.json Regenerated example IDs.
public/api/examples/studyPatchResponse.json Regenerated example IDs/formatting.
public/api/examples/studyPatch.json Regenerated example IDs.
public/api/examples/studiesResponse.json Regenerated example IDs/titles.
public/api/examples/sopsResponse.json Regenerated example IDs.
public/api/examples/sopResponse.json Adds meta.metrics in example + regenerates IDs/timestamps.
public/api/examples/sopPostResponse.json Adds meta.metrics in example + regenerates IDs/timestamps.
public/api/examples/sopPost.json Regenerated example IDs.
public/api/examples/sopPatch.json Regenerated example IDs.
public/api/examples/sampleTypesResponse.json Regenerated example response formatting (empty data array).
public/api/examples/sampleTypePostResponse.json Regenerated example IDs/formatting.
public/api/examples/sampleTypePost.json Regenerated example IDs/titles.
public/api/examples/sampleTypePatchResponse.json Regenerated example IDs/formatting.
public/api/examples/sampleTypePatch.json Regenerated example IDs/formatting.
public/api/examples/sampleResponse.json Adds meta.metrics in example + regenerates IDs/timestamps.
public/api/examples/samplePostResponse.json Adds meta.metrics in example + regenerates IDs/timestamps.
public/api/examples/samplePost.json Regenerated example IDs.
public/api/examples/samplePatchResponse.json Adds meta.metrics in example + regenerates IDs/timestamps.
public/api/examples/samplePatch.json Regenerated example IDs/formatting.
public/api/examples/sampleControlledVocabPostResponse.json Regenerated example IDs.
public/api/examples/sampleControlledVocabPatchResponse.json Regenerated example IDs.
public/api/examples/sampleControlledVocabPatch.json Regenerated example IDs.
public/api/examples/publicationsResponse.json Regenerated example IDs.
public/api/examples/projectPostResponse.json Regenerated example IDs/formatting.
public/api/examples/projectPost.json Regenerated example IDs.
public/api/examples/projectPatchResponse.json Regenerated example IDs/formatting.
public/api/examples/projectPatch.json Regenerated example IDs.
public/api/examples/programmesResponse.json Regenerated example IDs/titles.
public/api/examples/programmeResponse.json Regenerated example IDs.
public/api/examples/programmePostResponse.json Regenerated example IDs/formatting.
public/api/examples/programmePost.json Regenerated example IDs.
public/api/examples/programmePatchResponse.json Regenerated example IDs/formatting.
public/api/examples/programmePatch.json Regenerated example IDs.
public/api/examples/presentationsResponse.json Regenerated example response formatting (empty data array).
public/api/examples/presentationPostResponse.json Adds meta.metrics in example + regenerates IDs/timestamps.
public/api/examples/presentationPost.json Regenerated example IDs.
public/api/examples/presentationPatch.json Regenerated example IDs.
public/api/examples/personResponse.json Regenerated example IDs.
public/api/examples/personPostResponse.json Regenerated example IDs/formatting.
public/api/examples/personPost.json Regenerated example IDs/emails.
public/api/examples/personPatchResponse.json Regenerated example IDs.
public/api/examples/personPatch.json Regenerated example IDs.
public/api/examples/peopleResponse.json Regenerated example IDs/titles.
public/api/examples/organismsResponse.json Regenerated example IDs.
public/api/examples/organismResponse.json Regenerated example IDs.
public/api/examples/observationUnitsResponse.json Regenerated example IDs.
public/api/examples/observationUnitResponse.json Adds meta.metrics in example + regenerates IDs/timestamps.
public/api/examples/observationUnitPostResponse.json Adds meta.metrics in example + regenerates IDs/timestamps.
public/api/examples/observationUnitPost.json Regenerated example IDs.
public/api/examples/observationUnitPatchResponse.json Adds meta.metrics in example + regenerates IDs/timestamps.
public/api/examples/observationUnitPatch.json Regenerated example IDs.
public/api/examples/modelsResponse.json Regenerated example response formatting (empty data array).
public/api/examples/modelPost.json Regenerated example IDs.
public/api/examples/modelPatch.json Regenerated example IDs.
public/api/examples/isaTagResponse.json Regenerated example IDs.
public/api/examples/investigationsResponse.json Regenerated example IDs/titles.
public/api/examples/investigationResponse.json Regenerated example IDs/formatting.
public/api/examples/investigationPostResponse.json Regenerated example IDs/formatting.
public/api/examples/investigationPost.json Regenerated example IDs.
public/api/examples/investigationPatchResponse.json Regenerated example IDs/formatting.
public/api/examples/investigationPatch.json Regenerated example IDs.
public/api/examples/institutionsResponse.json Regenerated example IDs/titles.
public/api/examples/institutionResponse.json Regenerated example IDs/formatting.
public/api/examples/institutionPostResponse.json Regenerated example IDs/formatting.
public/api/examples/institutionPatchResponse.json Regenerated example IDs/formatting.
public/api/examples/institutionPatch.json Regenerated example IDs.
public/api/examples/humanDiseaseResponse.json Regenerated example IDs/formatting.
public/api/examples/fileTemplatesResponse.json Regenerated example IDs.
public/api/examples/fileTemplateResponse.json Adds meta.metrics in example + regenerates IDs/timestamps.
public/api/examples/fileTemplatePostResponse.json Adds meta.metrics in example + regenerates IDs/timestamps.
public/api/examples/fileTemplatePost.json Regenerated example IDs.
public/api/examples/fileTemplatePatchResponse.json Adds meta.metrics in example + regenerates IDs/timestamps.
public/api/examples/fileTemplatePatch.json Regenerated example IDs.
public/api/examples/extendedMetadataTypesResponse.json Regenerated example IDs.
public/api/examples/extendedMetadataTypeResponse.json Regenerated example IDs.
public/api/examples/eventsResponse.json Regenerated example response formatting (empty data array).
public/api/examples/eventResponse.json Regenerated example IDs/formatting.
public/api/examples/eventPostResponse.json Regenerated example IDs/formatting.
public/api/examples/eventPost.json Regenerated example IDs.
public/api/examples/eventPatchResponse.json Regenerated example IDs/formatting.
public/api/examples/eventPatch.json Regenerated example IDs.
public/api/examples/documentsResponse.json Regenerated example IDs.
public/api/examples/documentPost.json Regenerated example IDs.
public/api/examples/documentPatch.json Regenerated example IDs.
public/api/examples/dataFilesResponse.json Regenerated example response formatting (empty data array).
public/api/examples/dataFilePost.json Regenerated example IDs.
public/api/examples/dataFilePatch.json Regenerated example IDs.
public/api/examples/contentBlobResponse.json Regenerated example IDs/links.
public/api/examples/collectionsResponse.json Regenerated example IDs.
public/api/examples/collectionPostResponse.json Adds meta.metrics in example + regenerates IDs/timestamps.
public/api/examples/collectionPost.json Regenerated example IDs.
public/api/examples/collectionPatchResponse.json Adds meta.metrics in example + regenerates IDs/timestamps.
public/api/examples/collectionPatch.json Regenerated example IDs.
public/api/examples/collectionItemsResponse.json Regenerated example IDs/formatting.
public/api/examples/collectionItemResponse.json Regenerated example IDs/timestamps.
public/api/examples/collectionItemPostResponse.json Regenerated example IDs/timestamps.
public/api/examples/collectionItemPost.json Regenerated example IDs.
public/api/examples/collectionItemPatchResponse.json Regenerated example IDs/timestamps.
public/api/examples/collectionItemPatch.json Regenerated example IDs.
public/api/examples/assaysResponse.json Regenerated example response formatting (empty data array).
public/api/examples/assayResponse.json Regenerated example IDs/formatting.
public/api/examples/assayPostResponse.json Regenerated example IDs/formatting.
public/api/examples/assayPost.json Regenerated example IDs.
public/api/examples/assayPatchResponse.json Regenerated example IDs/formatting.
public/api/examples/assayPatch.json Regenerated example IDs/formatting.

💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.

Comment thread public/api/definitions/_schemas.yml
Comment thread test/functional/workflows_controller_test.rb
@stuzart stuzart added this to the 1.19.0 milestone Aug 27, 2026
@fbacall
fbacall merged commit bb7cd6d into seek4science:main Sep 1, 2026
10 checks passed
@AbbyGavin
AbbyGavin deleted the activity-metrics-in-json branch September 1, 2026 12:50
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Add activity metrics to JSON API

4 participants