{"id":18753286,"url":"https://github.com/pingidentity/scim2","last_synced_at":"2025-05-16T01:05:04.922Z","repository":{"id":29087354,"uuid":"32615673","full_name":"pingidentity/scim2","owner":"pingidentity","description":"The UnboundID SCIM 2.0 SDK for Java","archived":false,"fork":false,"pushed_at":"2025-05-12T20:22:08.000Z","size":2487,"stargazers_count":193,"open_issues_count":20,"forks_count":76,"subscribers_count":28,"default_branch":"master","last_synced_at":"2025-05-12T21:25:40.180Z","etag":null,"topics":["pingidentity","scim","scim2","sdk","unboundid"],"latest_commit_sha":null,"homepage":"","language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/pingidentity.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":null,"license":null,"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":"2015-03-21T01:38:42.000Z","updated_at":"2025-05-06T16:03:49.000Z","dependencies_parsed_at":"2024-01-02T00:46:15.016Z","dependency_job_id":"fad5e94d-22ec-493d-bfa0-dd25e5847ebd","html_url":"https://github.com/pingidentity/scim2","commit_stats":{"total_commits":440,"total_committers":29,"mean_commits":"15.172413793103448","dds":0.8068181818181819,"last_synced_commit":"dc8144f6163bd5793d1cc4f912e559c73241e191"},"previous_names":[],"tags_count":37,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pingidentity%2Fscim2","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pingidentity%2Fscim2/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pingidentity%2Fscim2/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pingidentity%2Fscim2/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/pingidentity","download_url":"https://codeload.github.com/pingidentity/scim2/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":254448579,"owners_count":22072764,"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","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":["pingidentity","scim","scim2","sdk","unboundid"],"created_at":"2024-11-07T17:25:08.715Z","updated_at":"2025-05-16T01:04:59.905Z","avatar_url":"https://github.com/pingidentity.png","language":"Java","funding_links":[],"categories":["安全"],"sub_categories":[],"readme":"[![Maven Central](https://maven-badges.herokuapp.com/maven-central/com.unboundid.product.scim2/scim2-parent/badge.svg)](https://maven-badges.herokuapp.com/maven-central/com.unboundid.product.scim2/scim2-parent)\n[![Javadocs](http://javadoc.io/badge/com.unboundid.product.scim2/scim2-parent.svg)](http://javadoc.io/doc/com.unboundid.product.scim2/scim2-parent)\n[![Build Status](https://github.com/pingidentity/scim2/actions/workflows/build-and-test.yaml/badge.svg)](https://github.com/pingidentity/scim2/actions/workflows/build-and-test.yaml)\n\n# UnboundID SCIM 2 SDK for Java\n[SCIM](https://www.simplecloud.info), or _System for Cross-domain Identity Management_, is an IETF\nstandard that defines an extensible schema mechanism and REST API for **managing users and other\nidentity data**. SCIM is used by a variety of vendors — including GitHub, Salesforce, Microsoft,\nCisco, Sailpoint, and Ping Identity — for a variety of purposes, including user provisioning,\ndirectory services, attribute exchange, and more.\n\nThe UnboundID SCIM 2 SDK for Java provides a powerful and flexible set of APIs for interacting with SCIM service providers and resources. Use it to build applications and servers that interoperate with SCIM servers such as the [PingDirectory Server](https://www.pingidentity.com/en/platform/capabilities/directory.html).\n\nThe SCIM 2 SDK consists of the following components:\n\n| Component name | What it is | Who needs it |\n| --- | --- | --- |\n| `scim2-sdk-client` | The SCIM 2 client API. | SCIM client developers. |\n| `scim2-ubid-extensions` | Model classes representing UnboundID extensions to the SCIM standard. This component is subject to API changes and should be considered experimental. | SCIM client developers using features specific to UnboundID servers. |\n| `scim2-sdk-server` | Classes for use by SCIM 2 service providers. | SCIM service provider implementers. |\n| `scim2-sdk-common` | Shared model, exception, and utility classes. | Included as a transitive dependency of all of the above. |\n\n# How to get it\nThe SCIM 2 SDK is available from Maven Central and can be included in your product like any other Maven dependency. Check Maven Central for the latest available version of SCIM 2 SDK dependencies.\n\nFor general-purpose clients:\n\n```xml\n\u003cdependency\u003e\n  \u003cgroupId\u003ecom.unboundid.product.scim2\u003c/groupId\u003e\n  \u003cartifactId\u003escim2-sdk-client\u003c/artifactId\u003e\n  \u003cversion\u003eVERSION\u003c/version\u003e\n\u003c/dependency\u003e\n```\n\nFor clients using UnboundID-specific features:\n\n```xml\n\u003cdependency\u003e\n  \u003cgroupId\u003ecom.unboundid.product.scim2\u003c/groupId\u003e\n  \u003cartifactId\u003escim2-ubid-extensions\u003c/artifactId\u003e\n  \u003cversion\u003eVERSION\u003c/version\u003e\n\u003c/dependency\u003e\n```\n\nYou may also download SCIM 2 SDK builds from the [Releases](https://github.com/pingidentity/scim2/releases) page.\n\n# How to use it\nThe UnboundID SCIM 2 SDK requires Java 11 or greater.\n\nThe primary point of entry for a client is the `ScimService` class, which represents a SCIM service provider, such as the PingDirectory Server. This class acts as a wrapper for a [JAX-RS](https://github.com/jax-rs) client instance, providing methods for building and making requests.\n\nOther classes provide facilities for selecting attributes by path, building query filters, and working with JSON documents. SCIM resources returned from a service provider can either be represented as POJOs or using an API based on the [Jackson](https://github.com/FasterXML/jackson-docs) tree model.\n\n```java\nimport com.unboundid.scim2.client.ScimService;\nimport com.unboundid.scim2.common.exceptions.ScimException;\nimport com.unboundid.scim2.common.types.UserResource;\nimport com.unboundid.scim2.common.types.Name;\nimport com.unboundid.scim2.common.types.Email;\nimport com.unboundid.scim2.common.GenericScimResource;\nimport com.unboundid.scim2.common.messages.ListResponse;\nimport com.unboundid.scim2.common.filters.Filter;\n\n// Create a ScimService\nClient client = ClientBuilder.newClient().register(OAuth2ClientSupport.feature(\"..bearerToken..\"));\nWebTarget target = client.target(\"https://example.com/scim/v2\");\nScimService scimService = new ScimService(target);\n\n// Create a user\nUserResource user = new UserResource();\nuser.setUserName(\"babs\");\nuser.setPassword(\"secret\");\nName name = new Name()\n  .setGivenName(\"Barbara\")\n  .setFamilyName(\"Jensen\");\nuser.setName(name);\nEmail email = new Email()\n  .setType(\"home\")\n  .setPrimary(true)\n  .setValue(\"babs@example.com\");\nuser.setEmails(email);\nuser = scimService.create(\"Users\", user);\n\n// Retrieve the user as a UserResource and replace with a modified instance using PUT\nuser = scimService.retrieve(\"Users\", user.getId(), UserResource.class);\nuser.setDisplayName(\"Babs\");\nuser = scimService.replace(user);\n\n// Retrieve the user as a GenericScimResource and replace with a modified instance using PUT\nGenericScimResource genericUser =\n    scimService.retrieve(\"Users\", user.getId(), GenericScimResource.class);\ngenericUser.replace(\"displayName\", \"Babs Jensen\");\ngenericUser = scimService.replaceRequest(genericUser).invoke();\n\n// Perform a partial modification of the user using PATCH\nscimService.modifyRequest(\"Users\", user.getId())\n           .replaceValue(\"displayName\", \"Babs\")\n           .invoke(GenericScimResource.class);\n\n// Perform a password change using PATCH\nscimService.modifyRequest(\"Users\", user.getId())\n           .replaceValue(\"password\", \"new-password\")\n           .invoke(GenericScimResource.class);\n\n// Search for users with the same last name as our user\nListResponse\u003cUserResource\u003e searchResponse =\n  scimService.searchRequest(\"Users\")\n        .filter(Filter.eq(\"name.familyName\", user.getName().getFamilyName()).toString())\n        .page(1, 5)\n        .attributes(\"name\")\n        .invoke(UserResource.class);\n```\n\nFor detailed information about using the SCIM 2 SDK, including more examples, please see the [wiki](https://github.com/pingidentity/scim2/wiki).\n\n# Nullability Annotations\nAs of version 3.1.0, the SCIM 2 SDK provides the `com.unboundid.scim2.common.annotations.Nullable`\nand `com.unboundid.scim2.common.annotations.NotNull` annotations for all input parameters, member\nvariables, and method return values. This is designed to provide insight when invoking SCIM SDK\nlibrary methods, help interface with languages like Kotlin (which has built-in null types for\nvariables), and to help applications become less prone to nullability problems. These annotations\ncan be leveraged by IDE tools to help validate objects that are given to and received from the SCIM\nSDK library. To configure/integrate this into your environment, view the documentation of your IDE\nof choice. Some popular choices are linked below:\n* [IntelliJ IDEA](https://www.jetbrains.com/help/idea/annotating-source-code.html#configure-nullability-annotations)\n* [Eclipse](https://help.eclipse.org/latest/index.jsp?topic=%2Forg.eclipse.jdt.doc.user%2Ftasks%2Ftask-using_null_annotations.htm)\n\n\n# Reporting issues\n\nPlease report bug reports and enhancement requests through this project's [issue tracker](https://github.com/pingidentity/scim2/issues). See the [contribution guidelines](CONTRIBUTING.md) for more information.\n\n# License\nThe UnboundID SCIM2 SDK is available under three licenses: the GNU General Public License version 2 (GPLv2), the GNU Lesser General Public License version 2.1 (LGPLv2.1), and a free-right-to-use license created by UnboundID Corp. See the [LICENSE](https://github.com/pingidentity/scim2/blob/master/resource/LICENSE.txt) file for more info.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpingidentity%2Fscim2","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fpingidentity%2Fscim2","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpingidentity%2Fscim2/lists"}