{"id":42975847,"url":"https://github.com/open-io/oio-api-java","last_synced_at":"2026-01-31T01:35:15.672Z","repository":{"id":57735948,"uuid":"51176992","full_name":"open-io/oio-api-java","owner":"open-io","description":"OpenIO SDS Java client API, giving direct access to the object storage","archived":false,"fork":false,"pushed_at":"2020-05-19T06:14:40.000Z","size":537,"stargazers_count":8,"open_issues_count":2,"forks_count":9,"subscribers_count":23,"default_branch":"master","last_synced_at":"2023-07-28T18:20:15.202Z","etag":null,"topics":["java","object-storage","openio","openio-sds","openio-sds-api"],"latest_commit_sha":null,"homepage":"https://www.openio.io/","language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"lgpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/open-io.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}},"created_at":"2016-02-05T22:04:40.000Z","updated_at":"2023-01-27T11:04:15.000Z","dependencies_parsed_at":"2022-08-24T13:40:51.236Z","dependency_job_id":null,"html_url":"https://github.com/open-io/oio-api-java","commit_stats":null,"previous_names":[],"tags_count":23,"template":null,"template_full_name":null,"purl":"pkg:github/open-io/oio-api-java","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/open-io%2Foio-api-java","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/open-io%2Foio-api-java/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/open-io%2Foio-api-java/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/open-io%2Foio-api-java/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/open-io","download_url":"https://codeload.github.com/open-io/oio-api-java/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/open-io%2Foio-api-java/sbom","scorecard":{"id":708364,"data":{"date":"2025-08-11","repo":{"name":"github.com/open-io/oio-api-java","commit":"acc526b3f571fd64a543d37ec658a6a22e49ad25"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":3.3,"checks":[{"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":"Code-Review","score":3,"reason":"Found 9/23 approved changesets -- score normalized to 3","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":"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":"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":"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":9,"reason":"binaries present in source code","details":["Warn: binary detected: gradle/wrapper/gradle-wrapper.jar:1"],"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":"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":"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: GNU Lesser General Public License v3.0: 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'","Warn: branch protection not enabled for branch '1.x'"],"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 19 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-22T07:25:10.144Z","repository_id":57735948,"created_at":"2025-08-22T07:25:10.144Z","updated_at":"2025-08-22T07:25:10.144Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28926269,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-30T22:32:35.345Z","status":"ssl_error","status_checked_at":"2026-01-30T22:32:31.927Z","response_time":66,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"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":["java","object-storage","openio","openio-sds","openio-sds-api"],"created_at":"2026-01-31T01:35:14.990Z","updated_at":"2026-01-31T01:35:15.667Z","avatar_url":"https://github.com/open-io.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"OpenIO SDS API\n==============\n\nOpenIO SDS API is a java remote API for [OpenIO Software Defined Storage](https://github.com/open-io/oio-sds). It is designed\n to be as simple and fast as possible.\n\n[![Build Status][build_status_svg]][repo] [![Codecov][codecov_svg]][codecov]\n\n-------------\n### Getting started\n------------\n\n###### OioUrl object\n\n  Each methods of the api will ask you for an OioUrl instance. This class simplify methods signatures and make code cleaner.\n  You will build it simply by calling OioUrl#url(String, String) for container url, i.e. to perform operations on container,\n  and by calling OioUrl#url(String, String, String) for object url. \n  \n  The first parameter is called \"ACCOUNT\". It define a storage space inside your SDS namespace. It could be used \n  for a dedicated application space for example. If you don't care about that, just choose an account name and keep the same all the time.\n  \n  The second parameter is the container name. It is the space in which your future objects will be created directly. \n  Its name is unique by account.\n  \n  And the last parameter is the object name, which is the identifier of your object inside a container, so, like container in account,\n  an object name is unique inside a container.\n  \n  Container url example:\n     \n    OioUrl url = OioUrl.url(\"MY_ACCOUNT\", \"MY_CONTAINER_NAME\");\n    \n  Object url example:\n  \n    OioUrl url = OioUrl.url(\"MY_ACCOUNT\", \"MY_CONTAINER_NAME\", \"MY_OBJECT_NAME\");\n\n------------\n### Storage client usage\n------------\n\n  OpenIO SDS API entry point is the Client implementations classes. Instances of these implementations\n  are built with ClientBuilder class. You could create a basic client by calling\n  ClientBuilder#newClient(String, String)} method, specifying the OpenIO namespace and proxyd\n  service url as argument. If you don't know what is proxyd service, please refer to OpenIO SDS documentation [here](https://github.com/open-io/oio-sds/wiki/OpenIO-SDS-Proxy).\n  Clients built from ClientBuilder are ready to be used. Let's see some basics examples.\n\n###### Basic client instantiation\n   \n    Client client = ClientBuilder.newClient(\"OPENIO\", \"http://127.0.0.1:6002\");\n\n###### Advanced client configuration\n\n    Settings settings = new Settings();\n        settings.proxy()\n                .ns(\"OPENIO\")\n                .url(\"http://127.0.0.1:6002\")\n                .ecd(\"http://127.0.0.1:5000\"); //setup an ecd url for Erasure cogin management\n        client = ClientBuilder.newClient(settings);\n    \n\n###### Container creation example \n\nAs simple as it could be:\n\n    OioUrl url = OioUrl.url(\"MY_ACCOUNT\", \"MY_CONTAINER_NAME\");\n    client.createContainer(url);\n    \n###### Upload an object from an InputStream\n\n    OioUrl url = OioUrl.url(\"MY_ACCOUNT\", \"MY_CONTAINER_NAME\", \"MY_OBJECT_NAME\");\n    File file = new File(\"MY_SAMPLE_FILE.txt\");\n    FileInputStream fis = new FileInputStream(file);\n    client.putObject(url, 1024L, fis);\n\n###### Retrieve and download an object\n\n    OioUrl url = OioUrl.url(\"MY_ACCOUNT\", \"MY_CONTAINER_NAME\", \"MY_OBJECT_NAME\");\n    ObjectInfo oinf = client.getObjectInfo(url);\n    InputStream data = client.downloadObject(oinf);\n    \n###### List objects inside a container\n\n    OioUrl url = OioUrl.url(\"MY_ACCOUNT\", \"MY_CONTAINER_NAME\");\n    ObjectList list = client.listContainer(url, new ListOptions());\n            \n###### Delete a content\n\n    OioUrl url = OioUrl.url(\"MY_ACCOUNT\", \"MY_CONTAINER_NAME\", \"MY_OBJECT_NAME\");\n    client.deleteObject(url);\n\n###### Delete a container\n\nAn empty container (it should be explicitly empty) could be deleted from your SDS namespace, as follow.\n\n    OioUrl url = OioUrl.url(\"MY_ACCOUNT\", \"MY_CONTAINER_NAME\");\n    client.deleteContainer(url);\n    \n------------\n### Exception management\n------------\n\nOpenIO choose to make all possible exceptions as RuntimeException extensions. By this way, we allow cleaner code \nwhen you decide to not check exceptions because you can't deal with unexpected behaviour (IOException etc...).\nSo our client throws only OioException : OioSystemException which indicates server error (connection issues, hardware issues,...),\nand others OioException extension for all use case errors. See io.openio.sds.exceptions package for exceptions detail.\n\nUsage exceptions are detailed just below\n\n| Name                              | Description                                        |\n| --------------------------------- | -------------------------------------------------- |\n| AccountNotFoundException          | The account you try to deal with does not exist    |\n| BadRequestException               | Some parameter is wrong in your request            |\n| ContainerExistException           | The container you try to create is already created |\n| ContainerNotFoundException        | The container you want to reach does not exist     | \n| ObjectExistException              | The object you try to created is alreay created    |\n| ObjectNotFoundException           | The object you try to reach does not exist         |\n| OioException                      | Main OpenIO exception class                        |\n| OioSystemException                | A system error occurred during your request        |\n| ReferenceAlreadyExistException    | The reference you try to create is alreayd created |\n| ReferenceNotFoundException        | the reference you try to reach does not exist      |\n\n\n------------\nContributing\n------------\n\nThis project was originally indented with tabulations but should from now on\nbe indented with 4 spaces.\n\n\n\n[build_status_svg]: https://travis-ci.org/open-io/oio-api-java.svg?branch=master\n[repo]: https://travis-ci.org/open-io/oio-api-java\n[codecov_svg]: https://codecov.io/gh/open-io/oio-api-java/branch/master/graph/badge.svg\n[codecov]: https://codecov.io/gh/open-io/oio-api-java\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fopen-io%2Foio-api-java","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fopen-io%2Foio-api-java","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fopen-io%2Foio-api-java/lists"}