{"id":37023483,"url":"https://github.com/identifiers-org/cloud-libapi","last_synced_at":"2026-01-14T02:49:25.058Z","repository":{"id":31129736,"uuid":"124037900","full_name":"identifiers-org/cloud-libapi","owner":"identifiers-org","description":"DEPRECATED Identifiers.org API library with models and service wrappers to access our services on the cloud.","archived":true,"fork":false,"pushed_at":"2025-05-07T10:05:07.000Z","size":495,"stargazers_count":5,"open_issues_count":2,"forks_count":0,"subscribers_count":5,"default_branch":"master","last_synced_at":"2025-07-11T06:24:06.539Z","etag":null,"topics":["deprecated"],"latest_commit_sha":null,"homepage":"","language":"Java","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/identifiers-org.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,"zenodo":null}},"created_at":"2018-03-06T07:23:07.000Z","updated_at":"2025-05-07T10:05:54.000Z","dependencies_parsed_at":"2024-01-12T13:53:59.889Z","dependency_job_id":null,"html_url":"https://github.com/identifiers-org/cloud-libapi","commit_stats":null,"previous_names":[],"tags_count":13,"template":false,"template_full_name":null,"purl":"pkg:github/identifiers-org/cloud-libapi","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/identifiers-org%2Fcloud-libapi","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/identifiers-org%2Fcloud-libapi/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/identifiers-org%2Fcloud-libapi/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/identifiers-org%2Fcloud-libapi/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/identifiers-org","download_url":"https://codeload.github.com/identifiers-org/cloud-libapi/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/identifiers-org%2Fcloud-libapi/sbom","scorecard":{"id":481233,"data":{"date":"2025-08-11","repo":{"name":"github.com/identifiers-org/cloud-libapi","commit":"df917970332a2ac53c7df2790e2be9b074713eeb"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":1.7,"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":"Code-Review","score":0,"reason":"Found 0/28 approved changesets -- score normalized to 0","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":"Maintained","score":0,"reason":"project is archived","details":["Warn: Repository is archived."],"documentation":{"short":"Determines if the project is \"actively maintained\".","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#maintained"}},{"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":"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":"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":"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":"Security-Policy","score":0,"reason":"security policy file not detected","details":["Warn: no security policy file detected","Warn: no security file to analyze","Warn: no security file to analyze","Warn: no security file to analyze"],"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":"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":"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":"SAST","score":0,"reason":"SAST tool is not run on all commits -- score normalized to 0","details":["Warn: 0 commits out of 4 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"}},{"name":"Vulnerabilities","score":0,"reason":"10 existing vulnerabilities detected","details":["Warn: Project is vulnerable to: GHSA-vmq6-5m68-f53m","Warn: Project is vulnerable to: GHSA-6v67-2wr5-gvf4","Warn: Project is vulnerable to: GHSA-pr98-23f8-jwxv","Warn: Project is vulnerable to: GHSA-2rmj-mq67-h97g","Warn: Project is vulnerable to: GHSA-2wrp-6fg6-hmc5","Warn: Project is vulnerable to: GHSA-4gc7-5j7h-4qph","Warn: Project is vulnerable to: GHSA-6r3c-xf4w-jxjm","Warn: Project is vulnerable to: GHSA-ccgv-vj62-xf9h","Warn: Project is vulnerable to: GHSA-hgjh-9rj2-g67j","Warn: Project is vulnerable to: GHSA-mjmj-j48q-9wg2"],"documentation":{"short":"Determines if the project has open, known unfixed vulnerabilities.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#vulnerabilities"}}]},"last_synced_at":"2025-08-19T16:41:08.143Z","repository_id":31129736,"created_at":"2025-08-19T16:41:08.143Z","updated_at":"2025-08-19T16:41:08.143Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28408769,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-14T01:52:23.358Z","status":"online","status_checked_at":"2026-01-14T02:00:06.678Z","response_time":107,"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"}},"keywords":["deprecated"],"created_at":"2026-01-14T02:49:24.349Z","updated_at":"2026-01-14T02:49:25.049Z","avatar_url":"https://github.com/identifiers-org.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003e [!IMPORTANT]\n\u003e THIS REPOSITORY IS DEPRECATED.\n\u003e\n\u003e Development on this webservice has been moved to: [https://github.com/identifiers-org/monorepo](https://github.com/identifiers-org/monorepo/tree/master/webservices/libapi).\n\u003e This new repository targets easier code integration and facilitated CI/CD pipeline. For any concerns, please [contact us](https://docs.identifiers.org/pages/contact) or open a issue at our [main issue board](https://github.com/identifiers-org/identifiers-org.github.io/issues).\n\n\n# Overview\nThis is a Java library that implements clients for [identifiers.org](https://identifiers.org) Web Services.\n\nThe following sections will explain how to use the different service wrappers to access\n[identifiers.org](https://identifiers.org) Web Services on any of its cloud deployments.\n\n\n# How to link this library in your code\nThis library is available at Maven Central, you can use it by just adding the following dependency:\n\n**Maven**\n```xml\n\u003cdependency\u003e\n    \u003cgroupId\u003eorg.identifiers.cloud\u003c/groupId\u003e\n    \u003cartifactId\u003elibapi\u003c/artifactId\u003e\n    \u003cversion\u003e1.1.0\u003c/version\u003e\n\u003c/dependency\u003e\n```\n\n**Apache Buildr**\n```\n'org.identifiers.cloud:libapi:jar:1.1.0'\n```\n\n**Apache Ivy**\n```xml\n\u003cdependency org=\"org.identifiers.cloud\" name=\"libapi\" rev=\"1.1.0\" /\u003e\n```\n\n**Groovy Grape**\n```groovy\n@Grapes(\n@Grab(group='org.identifiers.cloud', module='libapi', version='1.1.0')\n)\n```\n\n**Gradle/Grails**\n```gradle\ncompile 'org.identifiers.cloud:libapi:1.1.0'\n```\n\n**Scala SBT**\n```scala\nlibraryDependencies += \"org.identifiers.cloud\" % \"libapi\" % \"1.1.0\"\n```\n\n**Leiningen**\n```\n[org.identifiers.cloud/libapi \"1.1.0\"]\n```\n\n# Using to [identifiers.org](https://identifiers.org) API Web Services\n## Compact ID Resolution Service\nThe following code snippet shows how to get an instance of the service wrapper for\n[identifiers.org](https://identifiers.org) _Resolver Service_, and query the service for a given Compact ID.\n```java\nimport org.identifiers.cloud.libapi.services.ApiServicesFactory;\nimport org.identifiers.cloud.libapi.models.resolver.ServiceResponseResolve;\n\n// For accessing a locally deployed Resolver service at 'localhost:8080', and requesting resolution of\n// Compact ID 'CHEBI:36927'\nServiceResponseResolve response = ApiServicesFactory\n                .getResolverService(\"localhost\", \"8080\")\n                .requestCompactIdResolution(\"CHEBI:36927\");\n\n// For accessing a locally deployed Resolver service at 'localhost:8080', and requesting resolution of\n// Compact ID 'CHEBI:36927', but constraining the resource provider to 'ebi'\nServiceResponseResolve response = ApiServicesFactory\n                .getResolverService(\"localhost\", \"8080\")\n                .requestCompactIdResolution(\"CHEBI:36927\", \"ebi\");\n```\n\nAdditional factory methods are available where only the service 'host' is specified, in that case port '80' will be\nused, or where no 'host' or 'port' information is given, so the factory will provide an instance of the service client\npointing to any of the [identifiers.org](https://identifiers.org) cloud deployments.\n\n\n## Metadata Service\nThe following code snippet shows how to get an instance of the service wrapper for\n[identifiers.org](https://identifiers.org) _Metadata Service_, and submit metadata requests.\n```java\nimport org.identifiers.cloud.libapi.services.ApiServicesFactory;\nimport org.identifiers.cloud.libapi.models.metadata.ServiceResponseFetchMetadata;\nimport org.identifiers.cloud.libapi.models.metadata.ServiceResponseFetchMetadataForUrl;\n\n// Requesting metadata for a given Compact ID, the Metadata Service will choose the resource provider with the highest\n// recommendation index / score.\nServiceResponseFetchMetadata response = ApiServicesFactory\n                .getMetadataService(\"localhost\", \"8082\")\n                .getMetadataForCompactId(\"CHEBI:36927\");\n\n// Requesting metadata for a given URL.\nServiceResponseFetchMetadataForUrl response = ApiServicesFactory\n                .getMetadataService(\"localhost\", \"8082\")\n                .getMetadataForUrl(\"http://reactome.org/content/detail/R-HSA-201451\");\n```\n\nAdditional factory methods are available where only the service 'host' is specified, in that case port '80' will be\nused, or where no 'host' or 'port' information is given, so the factory will provide an instance of the service client\npointing to any of the [identifiers.org](https://identifiers.org) cloud deployments.\n\n\n## Registry Service\nThe following code snippet shows how to get an instance of the service wrapper for\n[identifiers.org](https://identifiers.org) _Registry Service_, and submit registration or validation requests.\n```java\nimport org.identifiers.cloud.libapi.models.registry.Requester;\nimport org.identifiers.cloud.libapi.models.registry.requests.prefixregistration.ServiceRequestRegisterPrefixPayload;\nimport org.identifiers.cloud.libapi.models.registry.responses.prefixregistration.ServiceResponseRegisterPrefix;\nimport org.identifiers.cloud.libapi.models.registry.responses.validation.ServiceResponseValidateRequest;\n\n\n// Preparing a prefix registration request payload\nServiceRequestRegisterPrefixPayload payload =\n            new ServiceRequestRegisterPrefixPayload()\n                                    .setName(\"A Name for this prefix Registration Request\")\n                                    .setDescription(\"This is a sample prefix registration request from a unit test of libapi, \" +\n                                            \"we need enouch characters for the description\")\n                                    .setHomePage(\"http://your_home.page\")\n                                    .setOrganization(\"Your Organization\")\n                                    .setPreferredPrefix(\"mynewprefix\")\n                                    .setResourceAccessRule(\"http://whatever_url/{$id}\")\n                                    .setExampleIdentifier(\"a_sample_id\")\n                                    .setRegexPattern(\"\\\\d+\")\n                                    .setReferences(new String[]{\"ref1\", \"ref2\"})\n                                    .setAdditionalInformation(\"Additional information about this unit test\")\n                                    .setRequester(new Requester()\n                                            .setEmail(\"requester@your_organization.mail\")\n                                            .setName(\"Requester Full Name\"));\n\n// Prefix registration request\nServiceResponseRegisterPrefix response =\n                ApiServicesFactory.getRegistryService(\"localhost\", \"8081\")\n                        .requestPrefixRegistration(payload);\n\n// There are methods for individual validation of the prefix registration payload fields, they all use the same\n// 'ServiceRequestRegisterPrefixPayload' payload object, filled only with the field that wants to be validated. As an\n// example, the following lines of code will validate the 'name' field.\n// Fill in the payload with just the 'name' field\nServiceRequestRegisterPrefixPayload payload =\n            new ServiceRequestRegisterPrefixPayload()\n                                    .setName(\"A Name for this prefix Registration Request\");\n// Request validation\nServiceResponseValidateRequest response =\n                ApiServicesFactory.getRegistryService(\"localhost\", \"8081\")\n                        .requestValidationName(payload);\n```\n\nAdditional factory methods are available where only the service 'host' is specified, in that case port '80' will be\nused, or where no 'host' or 'port' information is given, so the factory will provide an instance of the service client\npointing to any of the [identifiers.org](https://identifiers.org) cloud deployments.\n\n## Resolution Data Insight API\nIt is possible to get 'insights' into currently available resolution data through this API.\n\nThe currently supported use cases are shown below this line.\n\n```java\n// To get sample URLs to all the resource providers available in the resolution service, the following call can be used\nServiceResponseResolve response = ApiServicesFactory\n        .getResolverService(\"localhost\", \"8080\")\n        .getAllSampleIdsResolved();\n\n// To get a home URL for all the resource providers available in the resolution service, the following call can be used\nServiceResponseResolve response = ApiServicesFactory\n        .getResolverService(\"localhost\", \"8080\")\n        .getAllHomeUrls();\n```\n\n\n## Responses from the services\nThe responses from the different services will provide information on how the request was completed, via HTTP Status\ncode and a possible error message, as well as a specialized payload for the particular request submitted.\n\nFor further details, please refer to the javadoc accompanying this library.\n\n# Library Configuration\nThis library is able to provide clients for the different clouds where [identifiers.org](https://identifiers.org) has\ndeployed its services, i.e. Amazon Web Services, Google Cloud or Microsoft Azure. By default, a deployment is chosen\nrandomly between all the possible ones every time a web service client is requested, but this behaviour can be modified\nfor those use cases where we would like to lock in a cloud provider, i.e. we would like to use [identifiers.org](https://identifiers.org)\nweb services that are part of only one cloud deployment, this can be done using a _deployment selector_ within the\nlibrary configuration as shown in the following code snippet.\n\n```java\nimport org.identifiers.cloud.libapi.Configuration;\n\n// This call we'll make the library always select identifiers.org AWS deployment\nConfiguration.selectDeployment(Configuration.InfrastructureDeploymentSelector.AWS);\n\n// To make the library select random deployments again (default behaviour), we use the 'ANY' selector\nConfiguration.selectDeployment(Configuration.InfrastructureDeploymentSelector.ANY);\n```\n\n**Please, take into account that all code samples provided, were pointing to local deployments of [identifiers.org](https://identifiers.org), and it is advised to let the library configuration manager to either choose a random deployment, or lock it down to a particular cloud, so no information regarding _host_ (e.g. 'localhost' in the examples) and _port_ (e.g. 8080 in the case of the resolution code snippet) is needed.**\n\n\n### Contact\nManuel Bernal Llinares\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fidentifiers-org%2Fcloud-libapi","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fidentifiers-org%2Fcloud-libapi","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fidentifiers-org%2Fcloud-libapi/lists"}