{"id":13879644,"url":"https://github.com/appfolio/activeforce","last_synced_at":"2025-07-16T15:32:40.281Z","repository":{"id":3761358,"uuid":"4837531","full_name":"appfolio/activeforce","owner":"appfolio","description":"Activeforce provides a simple to use and extend interface to Salesforce using the REST API","archived":true,"fork":false,"pushed_at":"2019-06-25T19:24:32.000Z","size":116,"stargazers_count":9,"open_issues_count":0,"forks_count":3,"subscribers_count":148,"default_branch":"master","last_synced_at":"2024-10-31T08:15:33.537Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Ruby","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/appfolio.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.txt","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2012-06-29T21:45:52.000Z","updated_at":"2023-07-27T06:03:20.000Z","dependencies_parsed_at":"2022-08-17T23:00:42.702Z","dependency_job_id":null,"html_url":"https://github.com/appfolio/activeforce","commit_stats":null,"previous_names":[],"tags_count":21,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/appfolio%2Factiveforce","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/appfolio%2Factiveforce/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/appfolio%2Factiveforce/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/appfolio%2Factiveforce/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/appfolio","download_url":"https://codeload.github.com/appfolio/activeforce/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":226143895,"owners_count":17580245,"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":[],"created_at":"2024-08-06T08:02:27.602Z","updated_at":"2024-11-24T08:31:33.715Z","avatar_url":"https://github.com/appfolio.png","language":"Ruby","funding_links":[],"categories":["Ruby"],"sub_categories":[],"readme":"# ActiveForce\n\n[![Gem Version](https://badge.fury.io/rb/activeforce.svg)](http://badge.fury.io/rb/activeforce)\n[![Build Status](https://travis-ci.org/appfolio/activeforce.svg?branch=master)](https://travis-ci.org/appfolio/activeforce)\n\nActiveforce provides a clean ActiveRecord-like interface to the SalesForce.com REST API.\n\nActiveforce does not provide any integration with any Appfolio products.\n\n* Detects the schema of the SalesForce Objects on the fly, so that you can interact with the familiar ActiveRecord style attribute accessor methods.\n* Provides full access to all methods provided to the SQL-like Salesforce Object Query Language (SOQL).\n* Integrates with Salesforce.com REST-based BULK API.\n\n## Configuration\n\n### Simple Usage\n    Salesforce.configure do\n      username \"foo@bar.com\"\n      password \"salesforcepassword\"\n    end\n  \nThe password is a combination of your salesforce password and the API Token\n\n### Specifying a particular API version\n\nBy default, activeforce uses version 22 of the Salesforce REST API. To specify another version:\n\n    Salesforce.configure do\n      username \"foo@bar.com\"\n      password \"salesforcepasswordapitoken\" # This should be your salesforce password + your API Token\n      api_version 18\n    end\n\n### Using the Sandbox\n    Salesforce.configure do\n      username \"foo@bar.com.sandbox\"\n      password \"salesforcepassword\"\n      end\n\n### Finders\n\nactiveforce provides implementation for some standard Salesforce Objects like Account, Contact, Opportunity, etc\n\n### Accessing custom objects\n\nactiveforce provides an easy way to declare models for custom objects or other SalesForce objects that are not included by default.\n\n    class Salesforce::CustomObject \u003c Salesforce::Base\n      self.custom_object = true\n    end\n    \n    # or \n    \n    class Salesforce::Feed \u003c Salesforce::Base\n    end\n    \n\n#### Find all objects\n    Salesforce::Account.all\n  \n#### Find Account by id\n    Salesforce::Account.find(\"accountid\")\n  \n#### Dynamic Finders\n    Salesforce::Account.find_by_name(\"accountname\")\n  \n#### Specifying conditions\n\n    http://www.salesforce.com/us/developer/docs/api/index_Left.htm#CSHID=sforce_api_calls_soql.htm|StartTopic=Content%2Fsforce_api_calls_soql.htm|SkinName=webhelp\n    \n    Salesforce::Account.find(:all, :conditions =\u003e \":name = :value\", :value =\u003e \"my special name\") \n    # Issues a SOQL query to search for all Account objects where the field 'Name' matches \"my special name\"\n    # The SOQL Query is SELECT Id,Name,... FROM Account WHERE Name = 'my special name'\n    #\n    # This method of specifying columns in the query handles custom columns as well.\n    Salesforce::Account.find(:all, :conditions =\u003e \":account_type = :value\", :value =\u003e \"Special\")\n    # The SOQL Query issued here is  SELECT Id,Name,... FROM Account WHERE Account_Type__c = 'Special'\n    \n#### Creating and Updating Objects\n\n#### Deleting Objects\n\n## Salesforce Bulk API\n\nYou can create and schedule a job by:\n    \n    job = Salesforce::Account.bulk_update do\n      batch do\n        record account_1 # account_1 is an object of type Salesforce::Account\n        record account_2 # account_1 is an object of type Salesforce::Account\n      end\n    end\n\nYou can specify the columns that you want to update\n    job = Salesforce::Account.bulk_update(:name, :website) do\n      batch do\n        record account_1 # account_1 is an object of type Salesforce::Account\n        record account_2 # account_1 is an object of type Salesforce::Account\n      end\n    end\n    \n\n    \n\n### Contributing to activeforce\n \n* Check out the latest master to make sure the feature hasn't been implemented or the bug hasn't been fixed yet\n* Check out the issue tracker to make sure someone already hasn't requested it and/or contributed it\n* Fork the project\n* Start a feature/bugfix branch\n* Commit and push until you are happy with your contribution\n* Make sure to add tests for it. This is important so I don't break it in a future version unintentionally.\n* Please try not to mess with the Rakefile, version, or history. If you want to have your own version, or is otherwise necessary, that is fine, but please isolate to its own commit so I can cherry-pick around it.\n\n### Copyright\n\nCopyright (c) 2012 AppFolio, Inc.. See LICENSE.txt for further details.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fappfolio%2Factiveforce","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fappfolio%2Factiveforce","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fappfolio%2Factiveforce/lists"}