{"id":3498205,"name":"github.com/google/jsonapi","ecosystem":"go","description":"Package jsonapi provides a serializer and deserializer for jsonapi.org spec payloads.\n\nYou can keep your model structs as is and use struct field tags to indicate to jsonapi\nhow you want your response built or your request deserialized. What about my relationships?\njsonapi supports relationships out of the box and will even side load them in your response\ninto an \"included\" array--that contains associated objects.\n\njsonapi uses StructField tags to annotate the structs fields that you already have and use\nin your app and then reads and writes jsonapi.org output based on the instructions you give\nthe library in your jsonapi tags.\n\nExample structs using a Blog \u003e Post \u003e Comment structure,\n\njsonapi Tag Reference\n\nValue, primary: \"primary,\u003ctype field output\u003e\"\n\nThis indicates that this is the primary key field for this struct type. Tag\nvalue arguments are comma separated.  The first argument must be, \"primary\", and\nthe second must be the name that should appear in the \"type\" field for all data\nobjects that represent this type of model.\n\nValue, attr: \"attr,\u003ckey name in attributes hash\u003e[,\u003cextra arguments\u003e]\"\n\nThese fields' values should end up in the \"attribute\" hash for a record.  The first\nargument must be, \"attr', and the second should be the name for the key to display in\nthe \"attributes\" hash for that record.\n\nThe following extra arguments are also supported:\n\n\"omitempty\": excludes the fields value from the \"attribute\" hash.\n\"iso8601\": uses the ISO8601 timestamp format when serialising or deserialising the time.Time value.\n\nValue, relation: \"relation,\u003ckey name in relationships hash\u003e\"\n\nRelations are struct fields that represent a one-to-one or one-to-many to other structs.\njsonapi will traverse the graph of relationships and marshal or unmarshal records.  The first\nargument must be, \"relation\", and the second should be the name of the relationship, used as\nthe key in the \"relationships\" hash for the record.\n\nUse the methods below to Marshal and Unmarshal jsonapi.org json payloads.\n\nVisit the readme at https://github.com/google/jsonapi","homepage":"https://github.com/google/jsonapi","licenses":"MIT","normalized_licenses":["MIT"],"repository_url":"https://github.com/google/jsonapi","keywords_array":[],"namespace":"github.com/google","versions_count":1,"first_release_published_at":"2021-04-05T18:13:49.000Z","latest_release_published_at":"2021-04-05T18:13:49.000Z","latest_release_number":"v1.0.0","last_synced_at":"2026-03-30T22:02:12.320Z","created_at":"2022-04-10T19:49:52.514Z","updated_at":"2026-03-30T22:02:12.320Z","registry_url":"https://pkg.go.dev/github.com/google/jsonapi","install_command":"go get github.com/google/jsonapi","documentation_url":"https://pkg.go.dev/github.com/google/jsonapi#section-documentation","metadata":{},"repo_metadata":{"id":34663552,"uuid":"38635217","full_name":"google/jsonapi","owner":"google","description":"jsonapi.org style payload serializer and deserializer","archived":true,"fork":false,"pushed_at":"2024-07-02T14:03:51.000Z","size":332,"stargazers_count":1429,"open_issues_count":68,"forks_count":218,"subscribers_count":23,"default_branch":"master","last_synced_at":"2025-10-09T21:23:13.580Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"http://godoc.org/github.com/google/jsonapi","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/google.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2015-07-06T17:40:39.000Z","updated_at":"2025-09-16T15:30:35.000Z","dependencies_parsed_at":"2023-01-16T23:00:27.646Z","dependency_job_id":"46894ddd-c758-4053-a258-70c8c4c4a016","html_url":"https://github.com/google/jsonapi","commit_stats":{"total_commits":189,"total_committers":35,"mean_commits":5.4,"dds":0.6825396825396826,"last_synced_commit":"1e07b10d47d02b07ccaa2dfc5ceec143bdd81c14"},"previous_names":[],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/google/jsonapi","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/google%2Fjsonapi","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/google%2Fjsonapi/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/google%2Fjsonapi/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/google%2Fjsonapi/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/google","download_url":"https://codeload.github.com/google/jsonapi/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/google%2Fjsonapi/sbom","scorecard":{"id":437304,"data":{"date":"2025-08-11","repo":{"name":"github.com/google/jsonapi","commit":"1e07b10d47d02b07ccaa2dfc5ceec143bdd81c14"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":4.4,"checks":[{"name":"Packaging","score":-1,"reason":"packaging workflow not detected","details":["Warn: no GitHub/GitLab publishing workflow detected."],"documentation":{"short":"Determines if the project is published as a package that others can easily download, install, easily update, and uninstall.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#packaging"}},{"name":"Pinned-Dependencies","score":-1,"reason":"no dependencies found","details":null,"documentation":{"short":"Determines if the project has declared and pinned the dependencies of its build process.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#pinned-dependencies"}},{"name":"Dangerous-Workflow","score":-1,"reason":"no workflows found","details":null,"documentation":{"short":"Determines if the project's GitHub Action workflows avoid dangerous patterns.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#dangerous-workflow"}},{"name":"Maintained","score":0,"reason":"0 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 0","details":null,"documentation":{"short":"Determines if the project is \"actively maintained\".","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#maintained"}},{"name":"Token-Permissions","score":-1,"reason":"No tokens found","details":null,"documentation":{"short":"Determines if the project's workflows follow the principle of least privilege.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#token-permissions"}},{"name":"Binary-Artifacts","score":10,"reason":"no binaries found in the repo","details":null,"documentation":{"short":"Determines if the project has generated executable (binary) artifacts in the source repository.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#binary-artifacts"}},{"name":"Code-Review","score":4,"reason":"Found 7/16 approved changesets -- score normalized to 4","details":null,"documentation":{"short":"Determines if the project requires human code review before pull requests (aka merge requests) are merged.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#code-review"}},{"name":"CII-Best-Practices","score":0,"reason":"no effort to earn an OpenSSF best practices badge detected","details":null,"documentation":{"short":"Determines if the project has an OpenSSF (formerly CII) Best Practices Badge.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#cii-best-practices"}},{"name":"Fuzzing","score":0,"reason":"project is not fuzzed","details":["Warn: no fuzzer integrations found"],"documentation":{"short":"Determines if the project uses fuzzing.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#fuzzing"}},{"name":"Vulnerabilities","score":10,"reason":"0 existing vulnerabilities detected","details":null,"documentation":{"short":"Determines if the project has open, known unfixed vulnerabilities.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#vulnerabilities"}},{"name":"License","score":10,"reason":"license file detected","details":["Info: project has a license file: LICENSE:0","Info: FSF or OSI recognized license: MIT License: LICENSE:0"],"documentation":{"short":"Determines if the project has defined a license.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#license"}},{"name":"Signed-Releases","score":-1,"reason":"no releases found","details":null,"documentation":{"short":"Determines if the project cryptographically signs release artifacts.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#signed-releases"}},{"name":"Branch-Protection","score":0,"reason":"branch protection not enabled on development/release branches","details":["Warn: branch protection not enabled for branch 'master'"],"documentation":{"short":"Determines if the default and release branches are protected with GitHub's branch protection settings.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#branch-protection"}},{"name":"Security-Policy","score":10,"reason":"security policy file detected","details":["Info: security policy file detected: github.com/google/.github/SECURITY.md:1","Info: Found linked content: github.com/google/.github/SECURITY.md:1","Info: Found disclosure, vulnerability, and/or timelines in security policy: github.com/google/.github/SECURITY.md:1","Info: Found text in security policy: github.com/google/.github/SECURITY.md:1"],"documentation":{"short":"Determines if the project has published a security policy.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#security-policy"}},{"name":"SAST","score":0,"reason":"SAST tool is not run on all commits -- score normalized to 0","details":["Warn: 0 commits out of 26 are checked with a SAST tool"],"documentation":{"short":"Determines if the project uses static code analysis.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#sast"}}]},"last_synced_at":"2025-08-19T04:58:49.842Z","repository_id":34663552,"created_at":"2025-08-19T04:58:49.842Z","updated_at":"2025-08-19T04:58:49.842Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":279005465,"owners_count":26083900,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-10-10T02:00:06.843Z","response_time":62,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"},"owner_record":{"login":"google","name":"Google","uuid":"1342004","kind":"organization","description":"Google ❤️ Open Source","email":"opensource@google.com","website":"https://opensource.google/","location":"United States of America","twitter":"GoogleOSS","company":null,"icon_url":"https://avatars.githubusercontent.com/u/1342004?v=4","repositories_count":2773,"last_synced_at":"2025-08-12T15:55:14.931Z","metadata":{"has_sponsors_listing":false},"html_url":"https://github.com/google","funding_links":[],"total_stars":1967885,"followers":58475,"following":0,"created_at":"2022-11-02T16:20:58.973Z","updated_at":"2025-08-12T15:55:14.931Z","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/google","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/google/repositories"},"tags":[{"name":"v1.0.0","sha":"1e07b10d47d02b07ccaa2dfc5ceec143bdd81c14","kind":"tag","published_at":"2021-04-05T18:21:08.000Z","download_url":"https://codeload.github.com/google/jsonapi/tar.gz/v1.0.0","html_url":"https://github.com/google/jsonapi/releases/tag/v1.0.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/google/jsonapi@v1.0.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/google%2Fjsonapi/tags/v1.0.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/google%2Fjsonapi/tags/v1.0.0/manifests"}]},"repo_metadata_updated_at":"2025-10-11T12:56:49.883Z","dependent_packages_count":224,"downloads":null,"downloads_period":null,"dependent_repos_count":237,"rankings":{"downloads":null,"dependent_repos_count":0.41894719813506276,"dependent_packages_count":0.3461499374690197,"stargazers_count":1.767563116884194,"forks_count":1.8535302523430968,"docker_downloads_count":0.12760553911784112,"average":0.9027592087898428},"purl":"pkg:golang/github.com/google/jsonapi","advisories":[],"docker_usage_url":"https://docker.ecosyste.ms/usage/go/github.com/google/jsonapi","docker_dependents_count":57,"docker_downloads_count":918077378,"usage_url":"https://repos.ecosyste.ms/usage/go/github.com/google/jsonapi","dependent_repositories_url":"https://repos.ecosyste.ms/api/v1/usage/go/github.com/google/jsonapi/dependencies","status":null,"funding_links":[],"critical":null,"issue_metadata":{"last_synced_at":"2025-08-31T11:02:43.849Z","issues_count":51,"pull_requests_count":64,"avg_time_to_close_issue":21962219.42857143,"avg_time_to_close_pull_request":19111555.155555554,"issues_closed_count":21,"pull_requests_closed_count":45,"pull_request_authors_count":50,"issue_authors_count":45,"avg_comments_per_issue":2.5686274509803924,"avg_comments_per_pull_request":3.03125,"merged_pull_requests_count":15,"bot_issues_count":0,"bot_pull_requests_count":0,"past_year_issues_count":2,"past_year_pull_requests_count":7,"past_year_avg_time_to_close_issue":null,"past_year_avg_time_to_close_pull_request":105.14285714285714,"past_year_issues_closed_count":0,"past_year_pull_requests_closed_count":7,"past_year_pull_request_authors_count":4,"past_year_issue_authors_count":2,"past_year_avg_comments_per_issue":0.0,"past_year_avg_comments_per_pull_request":1.0,"past_year_bot_issues_count":0,"past_year_bot_pull_requests_count":0,"past_year_merged_pull_requests_count":0,"issues_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/repositories/google%2Fjsonapi/issues","maintainers":[],"active_maintainers":[]},"versions_url":"https://packages.ecosyste.ms/api/v1/registries/proxy.golang.org/packages/github.com%2Fgoogle%2Fjsonapi/versions","version_numbers_url":"https://packages.ecosyste.ms/api/v1/registries/proxy.golang.org/packages/github.com%2Fgoogle%2Fjsonapi/version_numbers","dependent_packages_url":"https://packages.ecosyste.ms/api/v1/registries/proxy.golang.org/packages/github.com%2Fgoogle%2Fjsonapi/dependent_packages","related_packages_url":"https://packages.ecosyste.ms/api/v1/registries/proxy.golang.org/packages/github.com%2Fgoogle%2Fjsonapi/related_packages","codemeta_url":"https://packages.ecosyste.ms/api/v1/registries/proxy.golang.org/packages/github.com%2Fgoogle%2Fjsonapi/codemeta","maintainers":[]}