Create Chatter Group Using Apex

Sample Code:

//Create a chatter group
CollaborationGroup gp = new CollaborationGroup();
gp.Name = 'Test Group';
gp.CollaborationType = 'Public';//It can be 'Public' or 'Private'                   
insert gp;
 
//Add member to above created chatter group
CollaborationGroupMember gpMember = new CollaborationGroupMember();
gpMember.MemberId = userId;//User id which you want to add
gpMember.CollaborationGroupId = gp.Id;//Above created group id
insert gpMember;

Salesforce OAuth Endpoints

Endpoint Type OAuth Endpoint Description
OAuth 2.0 authorization endpoint https://login.salesforce.com/services/oauth2/authorize The Salesforce instance’s OAuth 2.0 authorization endpoint. Connected apps send OAuth
authorization requests to this endpoint.
OAuth 2.0 token endpoint https://login.salesforce.com/services/oauth2/token The Salesforce instance’s OAuth 2.0 token endpoint. Connected apps send OAuth token
requests to this endpoint.
Revoke endpoint https://login.salesforce.com/services/oauth2/revoke The Salesforce instance’s OAuth 2.0 revoke endpoint. Send requests to this endpoint
to revoke a connected app’s access.
Profile information endpoint https://login.salesforce.com/services/oauth2/userinfo The OpenID Connect OAuth 2.0 user profile information endpoint. OpenID Connect
defines the UserInfo endpoint to get a user’s profile information.
Dynamic client registration endpoint https://hostname/services/oauth2/register The OpenID Connect dynamic client registration endpoint. Send requests to this
endpoint to automatically register connected apps with Salesforce.
Introspection endpoint https://hostname/services/oauth2/introspect The OpenID Connect token introspection endpoint. Send requests to this endpoint to
check the current state of an OAuth 2.0 access or refresh token.
OpenID connect discovery endpoint https://login.salesforce.com/.well-known/openid-configuration The OpenID Connect discovery endpoint. Send queries to this endpoint for information
about the Salesforce OpenID Connect configuration.
Authentication configuration endpoint https://hostname/.well-known/auth-configuration The authentication configuration endpoint. Send queries to this endpoint for
information about an org’s SAML single sign-on and authentication provider settings.

Get Dependent Picklist Values in Apex

Sample Code:

//Pass dependent field parameter e.g.: Account.YourDependentField__c
public static Map<Object,List<String>> getDependentPicklistValues(Schema.sObjectField dependentField){
        Map<Object,List<String>> dependentPicklistValues = new Map<Object,List<String>>();
		//Get dependent field result
        Schema.DescribeFieldResult dependentFieldResult = dependentField.getDescribe();
		//Get dependent field controlling field 
        Schema.sObjectField controllerField = dependentFieldResult.getController();
		//Check controlling field is not null
        if(controllerField == null){
            return null;
        } 
		//Get controlling field result
        Schema.DescribeFieldResult controllerFieldResult = controllerField.getDescribe();
		//Get controlling field picklist values if controlling field is not a checkbox
        List<Schema.PicklistEntry> controllerValues = (controllerFieldResult.getType() == Schema.DisplayType.Boolean ? null : controllerFieldResult.getPicklistValues());
        
		//It is used to decode the characters of the validFor fields. 
        String base64map = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';
        
        for (Schema.PicklistEntry entry : dependentFieldResult.getPicklistValues()){
            if (entry.isActive()){
			//The PicklistEntry is serialized and deserialized using the Apex JSON class and it will check to have a 'validFor' field
                List<String> base64chars = String.valueOf(((Map<String,Object>)JSON.deserializeUntyped(JSON.serialize(entry))).get('validFor')).split('');
                for (Integer i = 0; i < controllerValues.size(); i++){
                    Object controllerValue = (controllerValues == null ? (Object) (i == 1) : (Object) (controllerValues[i].isActive() ? controllerValues[i].getLabel() : null));
                    Integer bitIndex = i / 6;
                    Integer bitShift = 5 - Math.mod(i, 6 );
                    if(controllerValue == null || (base64map.indexOf(base64chars[bitIndex]) & (1 << bitShift)) == 0){
                        continue;
                    } 
                    if (!dependentPicklistValues.containsKey(controllerValue)){
                        dependentPicklistValues.put(controllerValue, new List<String>());
                    }
                    dependentPicklistValues.get(controllerValue).add(entry.getLabel());
                }
            }
        }
        return dependentPicklistValues;
    }