```APIs: func(originalImplementation tpepmodels.APIInterface) tpepmodels.APIInterface { // First we copy the original implementation originalThirdPartySignInUpPOST := *originalImplementation.ThirdPartySignInUpPOST // we override the thirdpartyemailpassword signinup POST API to return the social provider's access token (*originalImplementation.ThirdPartySignInUpPOST) = func(provider tpmodels.TypeProvider, code string, authCodeResponse interface{}, redirectURI string, options tpmodels.APIOptions, userContext supertokens.UserContext) (tpepmodels.ThirdPartyOutput, error) { // first we call the original implementation resp, err := originalThirdPartySignInUpPOST(provider, code, authCodeResponse, redirectURI, options, userContext) if err != nil { return tpepmodels.ThirdPartyOutput{}, err } // if sign in / up was successful, get access token from the social login provider if resp.OK != nil { authCodeResponse := resp.OK.AuthCodeResponse accessToken := authCodeResponse.(map[string]interface{})["access_token"].(string) thirdParty := resp.OK.User.ThirdParty.ID firstName, lastName := getNameFromProvider(thirdParty, accessToken) fmt.Println("firstname", firstName, "lastname", lastName) responseJson := map[string]interface{}{ "createdNewUser": resp.OK.CreatedNewUser, "status": "OK", "user": map[string]interface{}{ "email": resp.OK.User.Email, "id": resp.OK.User.ID, "thirdParty": resp.OK.User.ID, "firstName": firstName, "lastName": lastName, "timeJoined": resp.OK.User.TimeJoined, }, } bytes, _ := json.Marshal(responseJson) options.Res.Header().Set("Content-Type", "application/json") options.Res.WriteHeader(200) options.Res.Write(bytes) return tpepmodels.ThirdPartyOutput{ OK: &struct { CreatedNewUser bool User tpepmodels.User AuthCodeResponse interface{} Session sessmodels.SessionContainer }{}, }, nil } return resp, err } return originalImplementation },```