# README
SCIM
This module implements features described in RFC 7643 - SCIM: Core Schema and RFC 7644 - SCIM: Protocol, along with custom features that address specific implementation difficulties.
The goal of this package is to provide extensible, maintainable and easy-to-use building blocks for implementing a SCIM service with relatively good performance.
It is not the goal of this package to enable every possible use case, or to provide an out-of-box SCIM service.
This module evolved from v1 of github.com/imulab/go-scim.
We had since learnt couple lessons (issue 11 and 39) from this initial implementation and had decided to pursue a completely different design. Due to the drastic difference between the two major versions, we decided to stop maintaining v1 and devote limited resources and future efforts on maintaining v2.
We apologize for any inconvenience caused by this decision. The original v1 can still be checked out via tags.
:bulb: Usage
To get this package:
# make sure Go 1.13
go get github.com/imulab/go-scim/pkg/v2
:gift: Features in v2
- :free: Reflection free operations on resources
- :mailbox_with_mail: Property subscribers
- :rocket: Direct serialization and deserialization in JSON and other data exchange formats
- :wrench: Enhanced attributes model to allow for custom metadata
- :thumbsup: Robust SCIM path and filter parsing
- :fast_forward: Resource filters to allow for custom resource processing
:file_folder: Project Structure
Features in this module are separated into different directories:
spec
directory implements the foundation of SCIM resource type definitionprop
directory implementsProperty
which holds pieces of resource datajson
directory implements direct serialization and deserialization between SCIM resource and its JSON formatcrud
directory implements parsing and evaluation capabilities for SCIM path and SCIM filtersdb
directory introduces a standardDB
interface and a in-memory implementationannotation
directory documents internally used attribute annotations and their purposegroupsync
directory implements utilities to synchronize change inGroup.members
withUser.groups
service
directory implements CRUD services that carry out most of the protocol workhandlerutil
directory implements utilities that help parsing and rendering HTTP, assuming Go's HTTP abstraction
For detailed documentation, please check out README of individual directories, or GoDoc.
:bullettrain_side: Road Map
After delivering the v2.0.0 which will cover most features, efforts will be directed toward:
- ResourceType(s) and Schema(s) endpoints (see issue 40)
- Root query
- Bulk operations
- SCIM password management extension
- SCIM soft delete extension