FastGem allows access to a REST based API. 

To gain access you must first generate a session token through the authenticate call. 
Your API endpoing is your instance followd by /fast-api/v1
If your FastGem instance is "demo" https://DEMO.fastgem.net then your API endpoint will be https://demo.fastgem.net/fast-api/v1

Authenticate:
Endpoing: /fast-api/v1/authenticate
Body:

{    
    "username": "{{username}}",
    "password": "{{password}}"
}
Response: 
{"success":true,"message":null,"messages":null,"data":{"token":"XXXXXXXXXXXXXXXXX","email":"This email address is being protected from spambots. You need JavaScript enabled to view it."}}
 
All subsequent API calls will require the "token" from above in the header of the API as
Authorization: Bearer {{token}}
 
All objects within FastGem are accessible via the following commands: 
Single Object:
GET /fast-api/v1/:object/get/:objectID
Reponse (example with submission object):
{
    "success": true,
    "message": null,
    "messages": null,
    "data": [
        {
            "id": "4703",
            "business_name": null,
            "first_name": "Chuck",
            "last_name": "Norris",
            "business_segment": null,
            "business_type": null,
            "account_type": null,
            "email": null,
            "primary_phone": "1231231233",
            "secondary_phone": "0000000000",
            "other_phone": null,
            "account_number": null,
            "so_num": null,
            "order_id": null,
            "activity_id": null,
            "address": "12 W 1071 ST",
            "address2": null,
            "city": "WEST BOUNTIFUL",
            "us_state": "UT",
            "zipcode": "12312",
            "county": null,
            "billing_address": "123 W 1070 ST",
            "billing_address2": null,
            "billing_city": "WEST BOUNTIFUL",
            "billing_us_state": "UT",
            "billing_zipcode": "12312",
            "ssn": null,
            "dob": null,
            "pin": null,
            "security_answer": null,
            "driver_number": null,
            "driver_state": null,
            "driver_exp": null,
            "follow_up_details": null,
            "status": "PASS",
            "department": null,
            "credit_risk": null,
            "rep_id": "3",
            "lead_rep_id": null,
            "ref_id": null,
            "processor_channel": null,
            "area": "NOT SET",
            "campaign": null,
            "referrer_account_number": "123123",
            "referrer_business": null,
            "channel": null,
            "created": "2008-06-18 23:12:00",
            "lang": null,
            "submission_data": null,
            "custom_data": null,
            "raw_data": "{}",
            "file": null,
            "file1": null,
            "provider": null,
            "misc": null,
            "auth_subscription_id": null,
            "auth_customer_profile_id": null,
            "credit_card_name": null,
            "credit_card_num": null,
            "credit_card_exp": null,
            "checking_account_num": null,
            "credit_card_billing_zip": "84087",
            "credit_card_type": null,
            "checking_account_routing": null,
            "time_since": "0:00:00:00"
        }
    ]
}
 

Multiple Objects:
GET /fast-api/v1/:object?filter[_filter1]=ABC&filter[search]=SearchValue
Multiple search (and) with the same field (eg: status):
GET /fast-api/v1/submissions?filter[status][]=ABC&filter[status][]=XYZ
Paginate: 
GET /fast-api/v1/:object?list[limitstart]=X
This will return the records starting with the Xth record. The API will return 250 records at a time, so to paginate you should increate the list[limitstart] by 250 after each call. 
 Response (array): 
Note data object is an array when searching by object
{
    "success": true,
    "message": null,
    "messages": null,
    "data": [
        {
            "id": "827",
            "business_name": "",
            "first_name": "TEST",
            "last_name": "TEST",
            "business_classification": null,
            "business_segment": null,
            "business_type": null,
            "account_type": null,
            "email": "This email address is being protected from spambots. You need JavaScript enabled to view it.",
            "primary_phone": "1231231234",
            "secondary_phone": "",
            "other_phone": null,
            "account_number": "",
            "so_num": null,
            "order_id": "",
            "activity_id": "",
            "address": "123",
            "address2": "",
            "city": "ASDF",
            "us_state": "",
            "zipcode": "12312",
            "zipcode_four": null,
            "county": null,
            "billing_address": "123",
            "billing_address2": "",
            "billing_city": "ASDF",
            "billing_us_state": "",
            "billing_zipcode": "12312",
            "billing_zipcode_four": null,
            "ssn": null,
            "dob": null,
            "pin": "",
            "security_answer": "",
            "driver_number": "",
            "driver_state": "",
            "driver_exp": "",
            "follow_up_details": null,
            "status": "NOT STARTED",
            "department": null,
            "credit_risk": "",
            "rep_id": "131",
            "lead_rep_id": "0",
            "ref_id": "0",
            "processor_channel": null,
            "area": "new area test",
            "campaign": null,
            "referrer_account_number": null,
            "referrer_business": null,
            "created": "2022-07-27 10:48:24",
            "lang": "",
            "submission_data": "<p><b>Date</b>: 2022-07-27<br /><b>Sales Rep</b>: test rep under k 2<br /><br /><b>Customer First Name</b>: test<br /><b>Customer Last Name</b>: test<br /><b>Email</b>: This email address is being protected from spambots. You need JavaScript enabled to view it.;br /><b>Primary Phone</b>: 1231231234<br /><b>Address</b>: 123<br /><b>City</b>: asdf<br /><b>State</b>: asdf<br /><b>Zip</b>: 12312<br /><br /></p>",
            "custom_data": "{\"custom_data0\":{\"name\":\"test\",\"value\":\"pme\"}}",
            "raw_data": "{}",
            "file": null,
            "file1": "",
            "provider": "",
            "misc": null,
            "auth_subscription_id": "",
            "auth_customer_profile_id": "",
            "credit_card_name": null,
            "credit_card_num": null,
            "credit_card_exp": null,
            "checking_account_num": "",
            "credit_card_billing_zip": "12312",
            "credit_card_type": null,
            "checking_account_routing": null,
            "rep_phone": null,
            "rep_name": "test rep under k 2"
        }
    ]
}
Possible Objects: 
Accounts (aka: properties)
Submissions (aka: people/leads/contacts)
Appointments (aka: work orders)
Packages
Actions (aka: action log)
RepAdjustments
Reps (aka: employees/techs/reps)

Create/Update Object:
POST /fast-api/v1/:object/set
Body:
Body reflects the same fields as when a GET is called against that object. If the ID is supplied, the object is updated, otherwise it is created. 

Describe Object (potenial field values):
POST /fast-api/v1/:object/describe
 
Describe Single Object (potenial field values):
POST /fast-api/v1/:object/describe/:field