{"id":28764961,"url":"https://github.com/cloudinary/cloudinary_kotlin","last_synced_at":"2026-03-11T13:18:21.406Z","repository":{"id":39748790,"uuid":"226841227","full_name":"cloudinary/cloudinary_kotlin","owner":"cloudinary","description":"Cloudinary Kotlin SDK library","archived":false,"fork":false,"pushed_at":"2025-07-10T11:07:14.000Z","size":6035,"stargazers_count":10,"open_issues_count":4,"forks_count":5,"subscribers_count":15,"default_branch":"master","last_synced_at":"2025-10-25T01:32:28.492Z","etag":null,"topics":["cloudinary-sdk","hacktoberfest"],"latest_commit_sha":null,"homepage":"","language":"Kotlin","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/cloudinary.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","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":"2019-12-09T10:08:08.000Z","updated_at":"2025-10-11T07:21:55.000Z","dependencies_parsed_at":"2023-02-09T21:30:54.249Z","dependency_job_id":"c72c49a1-0fdf-4bc6-bf1f-ea705e060d06","html_url":"https://github.com/cloudinary/cloudinary_kotlin","commit_stats":null,"previous_names":[],"tags_count":17,"template":false,"template_full_name":null,"purl":"pkg:github/cloudinary/cloudinary_kotlin","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cloudinary%2Fcloudinary_kotlin","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cloudinary%2Fcloudinary_kotlin/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cloudinary%2Fcloudinary_kotlin/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cloudinary%2Fcloudinary_kotlin/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/cloudinary","download_url":"https://codeload.github.com/cloudinary/cloudinary_kotlin/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cloudinary%2Fcloudinary_kotlin/sbom","scorecard":{"id":293001,"data":{"date":"2025-08-11","repo":{"name":"github.com/cloudinary/cloudinary_kotlin","commit":"71905162c38dd8931511388f761b3e1bb2049269"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":4.4,"checks":[{"name":"Maintained","score":2,"reason":"3 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 2","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":0,"reason":"detected GitHub workflow tokens with excessive permissions","details":["Warn: no topLevel permission defined: .github/workflows/build.yml:1","Info: no jobLevel write permissions found"],"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":"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":5,"reason":"Found 16/30 approved changesets -- score normalized to 5","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":"Dangerous-Workflow","score":10,"reason":"no dangerous workflow patterns detected","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":"Pinned-Dependencies","score":0,"reason":"dependency not pinned by hash detected -- score normalized to 0","details":["Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/build.yml:11: update your workflow using https://app.stepsecurity.io/secureworkflow/cloudinary/cloudinary_kotlin/build.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/build.yml:14: update your workflow using https://app.stepsecurity.io/secureworkflow/cloudinary/cloudinary_kotlin/build.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/build.yml:32: update your workflow using https://app.stepsecurity.io/secureworkflow/cloudinary/cloudinary_kotlin/build.yml/master?enable=pin","Info:   0 out of   3 GitHub-owned GitHubAction dependencies pinned"],"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":"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: 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":"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":"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":-1,"reason":"internal error: error during branchesHandler.setup: internal error: githubv4.Query: Resource not accessible by integration","details":null,"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 18 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-17T18:46:08.870Z","repository_id":39748790,"created_at":"2025-08-17T18:46:08.870Z","updated_at":"2025-08-17T18:46:08.870Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":30382669,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-03-11T12:49:11.341Z","status":"ssl_error","status_checked_at":"2026-03-11T12:46:41.342Z","response_time":84,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6: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":["cloudinary-sdk","hacktoberfest"],"created_at":"2025-06-17T10:13:07.791Z","updated_at":"2026-03-11T13:18:21.388Z","avatar_url":"https://github.com/cloudinary.png","language":"Kotlin","readme":"Cloudinary Kotlin SDK\n=========================\n[![Build Status](https://api.travis-ci.com/cloudinary/cloudinary_kotlin.svg?branch=master)](https://app.travis-ci.com/github/cloudinary/cloudinary_kotlin)\n## About\nThe Cloudinary Kotlin SDK allows you to quickly and easily integrate your application with Cloudinary.\nEffortlessly optimize and transform your cloud's assets.\n\n### Additional documentation\nThis Readme provides basic installation and usage information.\nFor the complete documentation, see the [Kotlin SDK Guide](https://cloudinary.com/documentation/kotlin_integration).\n\n## Table of Contents\n- [Key Features](#key-features)\n- [Version Support](#Version-Support)\n- [Installation](#installation)\n- [Usage](#usage)\n  - [Setup](#Setup)\n  - [Transform and Optimize Assets](#Transform-and-Optimize-Assets)\n  - [Uploading Assets](#Uploading-Assets)\n\n## Key Features\n- [Transform](https://cloudinary.com/documentation/kotlin_media_transformations) and [optimize](https://cloudinary.com/documentation/kotlin_media_transformations#image_optimizations) assets.\n\n## Version Support\n| SDK Version   |  Kotlin Version  |\n|---------------|------------------|\n|      1.x      |       \u003e 1.0      | \n\n## Installation\nAdd the SDK to your project as a dependency, we recommend using a build management tool such as Maven or Gradle to do this.\n\n**Using Gradle**:\n\nAdd the Cloudinary Kotlin SDK to the dependencies section of your `build.gradle` file.\n\n```\nimplementation 'com.cloudinary:kotlin-url-gen:1.11.0'\n```\n\n**Using Maven**:\n\nAdd the Cloudinary Kotlin SDK to the list of dependencies in your `pom.xml` file.\n```xml\n\u003cdependency\u003e\n  \u003cgroupId\u003ecom.cloudinary\u003c/groupId\u003e\n  \u003cartifactId\u003ekotlin-url-gen\u003c/artifactId\u003e\n  \u003cversion\u003e1.11.0\u003c/version\u003e\n  \u003ctype\u003epom\u003c/type\u003e\n\u003c/dependency\u003e\n```\n\n## Usage\n### Setup\nThe `Cloudinary` class is the main entry point for using the library. Your `cloud_name` is required to create an instance of this class. Your `api_key` and `api_secret` are also needed to perform secure API calls to Cloudinary (e.g., image and video uploads). Setting the configuration parameters can be done either programmatically using an appropriate constructor of the Cloudinary class or globally using an environment variable. You can find your account-specific configuration parameters in the **Dashboard** page of your [account console](https://cloudinary.com/console).\n\nHere's an example of setting configuration parameters in your Kotlin application:\n\n```kotlin\nimport com.cloudinary.*\n\n...\nprivate val cloudinary = Cloudinary(\"cloudinary://\u003cyour-api-key\u003e:\u003cyour-api-secret\u003e@\u003cyour-cloud-name\u003e\")\n```\n### Transform and Optimize Assets\n\nGenerate a Cloudinary URL using the `cloudinary.media` helper method and pass this to your image or video view:\n\nFor example, to generate a url for an image called `sample` on the `demo` account, and resize it using the fill method:\n\nA transformation is also added to the image - cropping and using the sepia effect:\n\n```kotlin\n val cloudinary = Cloudinary(\"cloudinary://@demo\")\n val url = cloudinary.image {\n   publicId(\"sample\")\n   resize(Resize.fill {\n     width(100)\n     height(150)\n   })\n }\n println(url.generate())\n```\n\nThis will output the following url:\n`https://res.cloudinary.com/demo/image/upload/c_fill,h_150,w_100/sample.jpg`\n\n### Uploading Assets\n\nTo upload a file you need to call you `cloudinary` object with `uploader()`, here's an example:\n\n```kotlin\ncloudinary.uploader().upload(imageFile) { \n    params {\n      uploadPreset = \"sample_preset\"\n    }\n    options {\n      unsigned = true\n    }\n}\n```\n\n## Contributions\nSee [contributing guidelines](/CONTRIBUTING.md).\n\n## Get Help\nIf you run into an issue or have a question, you can either:\n- [Open a Github issue](https://github.com/cloudinary/cloudinary_kotlin/issues) (for issues related to the SDK)\n- [Open a support ticket](https://cloudinary.com/contact) (for issues related to your account)\n\n## About Cloudinary\nCloudinary is a powerful media API for websites and mobile apps alike, Cloudinary enables developers to efficiently manage, transform, optimize, and deliver images and videos through multiple CDNs. Ultimately, viewers enjoy responsive and personalized visual-media experiences—irrespective of the viewing device.\n\n## Additional Resources\n- [Cloudinary Transformation and REST API References](https://cloudinary.com/documentation/cloudinary_references): Comprehensive references, including syntax and examples for all SDKs.\n- [MediaJams.dev](https://mediajams.dev/): Bite-size use-case tutorials written by and for Cloudinary Developers\n- [DevJams](https://www.youtube.com/playlist?list=PL8dVGjLA2oMr09amgERARsZyrOz_sPvqw): Cloudinary developer podcasts on YouTube.\n- [Cloudinary Academy](https://training.cloudinary.com/): Free self-paced courses, instructor-led virtual courses, and on-site courses.\n- [Code Explorers and Feature Demos](https://cloudinary.com/documentation/code_explorers_demos_index): A one-stop shop for all code explorers, Postman collections, and feature demos found in the docs.\n- [Cloudinary Roadmap](https://cloudinary.com/roadmap): Your chance to follow, vote, or suggest what Cloudinary should develop next.\n- [Cloudinary Facebook Community](https://www.facebook.com/groups/CloudinaryCommunity): Learn from and offer help to other Cloudinary developers.\n- [Cloudinary Account Registration](https://cloudinary.com/users/register/free): Free Cloudinary account registration.\n- [Cloudinary Website](https://cloudinary.com)\n\n## Licence\nReleased under the MIT license.\n","funding_links":[],"categories":["Tools"],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcloudinary%2Fcloudinary_kotlin","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcloudinary%2Fcloudinary_kotlin","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcloudinary%2Fcloudinary_kotlin/lists"}