### GET /v1/proposal_templates Source: https://dev.arcsite.com/index_introduction Retrieves a list of proposal templates for your organization. ```APIDOC ## GET /v1/proposal_templates ### Description Retrieves a list of proposal templates for your organization. ### Method GET ### Endpoint `https://api.arcsite.com/v1/proposal_templates` ### Parameters #### Query Parameters - **page** (integer) - Optional - Request a specific page. Defaults to 1. - **per_page** (integer) - Optional - Page size. Defaults to 10. ### Request Example ```bash curl "https://api.arcsite.com/v1/proposal_templates?page=1&per_page=10" \ -H "Authorization: Bearer **your_api_token_here**" ``` ### Response #### Success Response (200) - **Array of Proposal Templates** - Each template object contains `id` and `name`. #### Response Example ```json [ { "id": "36029621652695041", "name": "Proposal Template 1" } ] ``` ``` -------------------------------- ### GET /v1/products Source: https://dev.arcsite.com/index_introduction Retrieves a list of products for your organization. Products are sorted by creation time in descending order by default. ```APIDOC ## GET /v1/products ### Description Retrieves a list of products for your organization. Products are sorted by creation time in descending order by default. ### Method GET ### Endpoint `https://api.arcsite.com/v1/products` ### Parameters #### Query Parameters - **page** (integer) - Optional - Request a specific page. Defaults to 1. - **per_page** (integer) - Optional - Page size. Defaults to 10. - **order_by** (string) - Optional - Sort field. Options: `create_at`, `update_at`. Defaults to `create_at`. - **order** (string) - Optional - Sort order. Options: `asc` (ascending), `desc` (descending). Defaults to `desc`. ### Request Example ```bash curl "https://api.arcsite.com/v1/products?page=2&per_page=20&order_by=update_at&order=asc" \ -H "Authorization: Bearer **your_api_token_here**" ``` ### Response #### Success Response (200) - **Array of Products** - Each product object contains `id`, `name`, `sku`, `description`, and `cost`. #### Response Example ```json [ { "id": "1", "name": "product 1", "sku": "abc", "description": "product 1 description", "cost": 20.0 } ] ``` ``` -------------------------------- ### GET /projects Source: https://dev.arcsite.com/index_introduction Retrieves a list of projects your organization has access to. Projects are returned in sorted order by creation date. ```APIDOC ## GET /projects ### Description Returns a list of projects your organization. The projects are returned in sorted order, with the most recent created project appearing first. ### Method GET ### Endpoint `https://api.arcsite.com/v1/projects` ### Query Parameters #### Query Parameters - **page** (Integer) - Optional - Request a specific page. Defaults to 1. - **per_page** (Integer) - Optional - Page size. Defaults to 10. - **created_at_begin** (string) - Optional - Filter by project creation start date in UTC ISO 8601 format (e.g., `2025-01-16T04:19:23`). - **created_at_end** (string) - Optional - Filter by project creation end date in UTC ISO 8601 format (e.g., `2025-01-16T04:19:23`). ### Request Example ```bash curl "https://api.arcsite.com/v1/projects" \ -H "Authorization: Bearer **your_api_token_here**" ``` ### Response #### Success Response (200) - **id** (Integer) - Unique identifier for the project. - **name** (string) - The name of the project. - **created_at** (string) - Timestamp when the project was created. - **updated_at** (string) - Timestamp when the project was last updated. - **job_number** (string) - The job number associated with the project. - **customer** (object) - Information about the customer. - **name** (string) - **phone** (string) - **second_phone** (string) - **email** (string) - **second_email** (string) - **address** (object) - **street** (string) - **city** (string) - **county** (string) - **state** (string) - **zip_code** (string) - **work_site_address** (object) - The address of the work site. - **street** (string) - **city** (string) - **county** (string) - **state** (string) - **zip_code** (string) - **sales_rep** (object) - Information about the sales representative. - **name** (string) - **email** (string) - **phone** (string) - **tags** (array of strings) - Tags associated with the project. - **archived** (boolean) - Indicates if the project is archived. #### Response Example ```json [ { "id": 36029621652695040, "name": "project 4", "created_at": "2022-01-16T04:19:23", "updated_at": "2022-01-16T04:19:23", "job_number": "144111", "customer": { "name": "Jack", "phone": "1441", "second_phone": "1122", "email": "c@arcsite.com", "second_email": "s@arcsite.com", "address": { "street": "street", "city": "city", "county": "county", "state": "state", "zip_code": "300433" } }, "work_site_address": { "street": "street", "city": "city", "county": "county", "state": "state", "zip_code": "300433" }, "sales_rep": { "name": "Wang", "email": "h@arcsite.com", "phone": "122122-121" }, "tags": ["tag1", "tag2"], "archived": false } ] ``` ``` -------------------------------- ### Improveit360 Integration Source: https://dev.arcsite.com/index_introduction Information on integrating ArcSite with Improveit360, including standard integration setup and data synchronization. ```APIDOC # Integrations ## Improveit360 Integration ArcSite Provides Out-of-the-Box Standard Integration for essential features. With Standard Integration, it supports auto-pushing Drawing PDFs, creating Sales data in I360 Appointments. No extra custom development is needed. ### Standard Integration for I360 **Integrating I360 into ArcSite** For detailed settings and connection methods, please consult the setup guide: **I360 Integration Setup Part One - Customer Steps**. **Associating I360 Appointments with ArcSite Projects** * Use the **ArcSite Project Create API** to generate an ArcSite project using information from an I360 appointment. * Associate an I360 appointment with a specific ArcSite project through Associate I360 Appointment with ArcSite Project. ### Validating the Integration Once you've successfully created the project and associated with the appointment, you can verify the integration status in ArcSite follow these steps: 1. Check if the project created via the API appears in the project List. If it's missing, this indicates a project creation failure. 2. Within the ArcSite app, create a drawing within the project and upload it to the Cloud. 3. On the ArcSite user site, select the uploaded drawing. 4. In the Takeoff & Estimate Tab, ensure the **Send to I360** button is visible. 5. If the **Send to I360** button appears, it confirms the successful association, allowing the project to push data to associated i360 appointment. If the button is missing, this indicates a project association failure. Please check the associate API for more information. ### Connecting Products between ArcSite and I360 ArcSite supports the connection of one I360 product to an ArcSite product through the ArcSite Product Manager web page in user site. Once connected, this connection relationship will be used when ArcSite pushes Line Items data to I360. To connect products, follow these steps: 1. Verify that the I360 environment is correctly set up, and the product exists in both I360 and ArcSite. 2. Navigate to `Integrations` -> `Product Manager` to locate the product you wish to connect. 3. Click the connect button and select the corresponding I360 product. 4. After connecting, the product status changes to connected, and the **Connect** button becomes **Update**. 5. If you wish to disconnect products, you can click **Update** , followed by the **Disconnect** button. ### Data Pushing Details We categorize data pushing into three types based on the data involved: ``` -------------------------------- ### GET /v1/proposals Source: https://dev.arcsite.com/index_introduction Retrieves a list of proposals for your organization. Proposals can be filtered by project ID and paginated. They are sorted by most recent activity first. ```APIDOC ## GET /v1/proposals ### Description Retrieves a list of proposals for your organization. Proposals can be filtered by project ID and paginated. They are sorted by most recent activity first. ### Method GET ### Endpoint `https://api.arcsite.com/v1/proposals` ### Parameters #### Query Parameters - **project_id** (string) - Optional - Project ID to filter proposals. - **page** (integer) - Optional - Request a specific page. Defaults to 1. - **per_page** (integer) - Optional - Page size. Defaults to 10. ### Request Example ```bash curl "https://api.arcsite.com/v1/proposals?project_id=some_project_id&page=1&per_page=10" \ -H "Authorization: Bearer **your_api_token_here**" ``` ### Response #### Success Response (200) - **Array of Proposals** - Each proposal object contains details like `proposal_id`, `project_id`, `name`, `status`, `total`, `pdf_url`, etc. #### Response Example ```json [ { "proposal_id": "123", "project_id": "456", "name": "Main Building Proposal", "status": "APPROVED", "sales_representative": "John Doe", "contact_email": "john@example.com", "customer_name": "Jane Smith", "customer_email": "jane@example.com", "document_number": "PROP-2024-001", "total": 15000.0, "pdf_url": "https://d1umxpetlubu85.cloudfront.net/36029346774973628/36029621653386370/36029621653386685/c6f62f3d-db06-42df-8138-91d80e792e5d/Drawing_1_Pre-Survey_Proposal_-281-29-page_03_test-page_02_test.pdf", "approved_option": { "id": "789", "drawing_id": "abc123def456" }, "initial_proposal_id": "111" } ] ``` ``` -------------------------------- ### Query Projects List (Shell) Source: https://dev.arcsite.com/index_introduction Example of how to retrieve a list of projects using the ArcSite API. This command utilizes the 'curl' utility and requires an Authorization header with a valid API token. The response is returned in JSON format. ```shell curl "https://api.arcsite.com/v1/projects" \ -H "Authorization: Bearer **your_api_token_here**" ``` -------------------------------- ### Get Project Source: https://dev.arcsite.com/index Retrieves a specific project by its ID. This endpoint allows you to fetch detailed information about a project. ```APIDOC ## GET /v1/projects/{id} ### Description Retrieves a specific project by its ID. This endpoint allows you to fetch detailed information about a project. ### Method GET ### Endpoint `https://api.arcsite.com/v1/projects/` ### Parameters #### Path Parameters - **id** (String) - Required - The unique identifier of the project. ### Request Example ```bash curl "https://api.arcsite.com/v1/projects/" -H "Authorization: Bearer **your_api_token_here**" ``` ### Response #### Success Response (200) - **id** (Number) - The project's unique identifier. - **name** (String) - The name of the project. - **created_at** (String) - The timestamp when the project was created. - **updated_at** (String) - The timestamp when the project was last updated. - **job_number** (String) - The job number associated with the project. - **customer** (Object) - The customer profile of the project. - **name** (String) - Customer's name. - **phone** (String) - Customer's primary phone number. - **second_phone** (String) - Customer's secondary phone number. - **email** (String) - Customer's primary email address. - **second_email** (String) - Customer's secondary email address. - **address** (Object) - Customer's address. - **street** (String) - Street name. - **city** (String) - City name. - **county** (String) - County name. - **state** (String) - State name. - **zip_code** (String) - Zip code. - **work_site_address** (Object) - The work site address of the project. - **street** (String) - Street name. - **city** (String) - City name. - **county** (String) - County name. - **state** (String) - State name. - **zip_code** (String) - Zip code. - **sales_rep** (Object) - The sales representative for the project. - **name** (String) - Sales representative's name. - **email** (String) - Sales representative's email address. - **phone** (String) - Sales representative's phone number. - **tags** (List[String]) - A list of tags associated with the project. - **archived** (Boolean) - Indicates if the project is archived. #### Response Example ```json { "id": 36029621652695040, "name": "project 4", "created_at": "2022-01-16T04:19:23", "updated_at": "2022-01-16T04:19:23", "job_number": "144111", "customer": { "name": "Jack", "phone": "1441", "second_phone": "1122", "email": "c@arcsite.com", "second_email": "s@arcsite.com", "address": { "street": "street", "city": "city", "county": "county", "state": "state", "zip_code": "300433" } }, "work_site_address": { "street": "street", "city": "city", "county": "county", "state": "state", "zip_code": "300433" }, "sales_rep": { "name": "Wang", "email": "h@arcsite.com", "phone": "122122-121" }, "tags": ["tag1", "tag2"], "archived": false } ``` ``` -------------------------------- ### Get Project Source: https://dev.arcsite.com/index_introduction Retrieves a specific project by its ID. This endpoint returns detailed information about a project, including its name, creation and update timestamps, customer details, sales representative information, and associated tags. ```APIDOC ## GET /v1/projects/{id} ### Description Returns project of your organization by project id. ### Method GET ### Endpoint `https://api.arcsite.com/v1/projects/` ### Parameters #### Path Parameters - **id** (String) - Required - The unique identifier of the project. ### Request Example ```bash curl "https://api.arcsite.com/v1/projects/" \ -H "Authorization: Bearer **your_api_token_here**" ``` ### Response #### Success Response (200) - **id** (Number) - The unique identifier of the project. - **name** (String) - The name of the project. - **created_at** (String) - The timestamp when the project was created. - **updated_at** (String) - The timestamp when the project was last updated. - **job_number** (String) - The job number associated with the project. - **customer** (Object) - Customer profile of the project. - **name** (String) - The name of the customer. - **phone** (String) - The primary phone number of the customer. - **second_phone** (String) - The secondary phone number of the customer. - **email** (String) - The primary email address of the customer. - **second_email** (String) - The secondary email address of the customer. - **address** (Object) - The address of the customer. - **street** (String) - The street address. - **city** (String) - The city. - **county** (String) - The county. - **state** (String) - The state. - **zip_code** (String) - The zip code. - **work_site_address** (Object) - The work site address of the project. - **street** (String) - The street address. - **city** (String) - The city. - **county** (String) - The county. - **state** (String) - The state. - **zip_code** (String) - The zip code. - **sales_rep** (Object) - Sales Representative of the project. - **name** (String) - The name of the sales representative. - **email** (String) - The email address of the sales representative. - **phone** (String) - The phone number of the sales representative. - **tags** (List[String]) - Tags associated with the project. - **archived** (Boolean) - Indicates if the project is archived. #### Response Example ```json { "id": 36029621652695040, "name": "project 4", "created_at": "2022-01-16T04:19:23", "updated_at": "2022-01-16T04:19:23", "job_number": "144111", "customer": { "name": "Jack", "phone": "1441", "second_phone": "1122", "email": "c@arcsite.com", "second_email": "s@arcsite.com", "address": { "street": "street", "city": "city", "county": "county", "state": "state", "zip_code": "300433" } }, "work_site_address": { "street": "street", "city": "city", "county": "county", "state": "state", "zip_code": "300433" }, "sales_rep": { "name": "Wang", "email": "h@arcsite.com", "phone": "122122-121" }, "tags": ["tag1", "tag2"], "archived": false } ``` ``` -------------------------------- ### Get Proposal Payments using cURL Source: https://dev.arcsite.com/index_introduction This snippet shows how to retrieve a list of payments associated with a specific proposal using a cURL command. It requires an API token for authentication and the proposal's ID in the URL. The response is a JSON array of payment objects, detailing amounts, channels, and statuses. ```shell curl "https://api.arcsite.com/v1/proposals//payments" \ -H "Authorization: Bearer **your_api_token_here**" ``` -------------------------------- ### Get Project Drawings using cURL Source: https://dev.arcsite.com/index_introduction Retrieves a list of drawings associated with a specific project. Supports pagination using 'page' and 'per_page' query parameters. Requires project ID and an API token for authorization. Returns a JSON array of drawing objects. ```curl curl "https://api.arcsite.com/v1/projects//drawings" \ -H "Authorization: Bearer **your_api_token_here**" ``` -------------------------------- ### GET /v1/drawings/{id}/takeoff_items Source: https://dev.arcsite.com/index_introduction Retrieves takeoff items for a specific drawing. You can optionally filter by a drawing version ID to get data from a specific version; otherwise, the latest version is returned by default. ```APIDOC ## GET /v1/drawings/{id}/takeoff_items ### Description Retrieves takeoff items associated with a specific drawing ID. If `drawing_version_id` is provided, it fetches data for that specific version; otherwise, it defaults to the latest version. ### Method GET ### Endpoint `/v1/drawings//takeoff_items` ### Parameters #### Path Parameters - **id** (String) - Required - The unique identifier of the drawing. #### Query Parameters - **drawing_version_id** (String) - Optional - The ID of the drawing version to retrieve takeoff items from. If not provided, the latest version's data is returned. ### Request Example ```bash curl "https://api.arcsite.com/v1/drawings//takeoff_items?drawing_version_id=" \ -H "Authorization: Bearer **your_api_token_here**" ``` ### Response #### Success Response (200) - **takeoff_items** (List[TakeffItemByProduct]) - A list of takeoff items, grouped by product. #### TakeffItemByProduct Schema - **name** (String) - The name of the product. - **quantity** (Number) - The total quantity of the product. - **unit** (String) - The unit of measurement for the product's quantity. - **sku** (String) - The stock keeping unit of the product. - **product_id** (String) - The ID of the product. - **items** (List[TakeoffItem]) - A list of individual takeoff items for the product. #### TakeoffItem Schema - **quantity** (Number) - The quantity of the item. For geometric products, this is the quantity shown in the drawing. For shape or virtual products, it's always one. - **sequence_number** (String) - Sequence Number for Shape products. - **unit** (String) - The input unit defined by the product. - **attributes** (List[TakeoffAttribute]) - A list of attributes associated with the takeoff item. #### TakeoffAttribute Schema - **type** (String) - The type of the attribute. Can be one of "TEXT", "PHOTO", "CHECKBOX", or "DATE". - **value** (String | List[String] | Boolean) - The value of the attribute. The type depends on the `type` field: "TEXT" expects a string, "PHOTO" expects a list of strings (URLs), "CHECKBOX" expects a boolean, and "DATE" expects a string in ISO format. #### Response Example ```json { "takeoff_items": [ { "name": "with attributes", "quantity": 300, "unit": "Amount", "sku": "GM-100", "product_id": "287386775856064026", "items": [ { "quantity": 1, "unit": "Each", "sequence_number": "1", "attributes": [ { "name": "cc", "value": null, "type": "TEXT" }, { "name": "d", "value": "Some text", "type": "TEXT" }, { "name": "yesno", "value": true, "type": "CHECKBOX" }, { "name": "photo", "value": [ "https://cdn-files-1-test.arcsite.com/36029346774973628/282299611419718/282299611419728/F4AF22A9-F011-4214-8729-CAF3F1F9D9F6.jpg?Expires=1711452610&Signature=sQz~sNF6xPGRPTvPBKyyXgKlA6jh0VSM6mXVpJ63XgYdCE1gat-nT~ZDXtcm~jEoK46UnUWU1ZlXPAiDx5IPwV25X1-pSb~jbXwdlkcz2jPkZPUN-ZWdaCvbMgTLJRvQw-V2RiUyrF83O5GLhJMVut8lfqsGjN3dgh5AtUc53h05dGRYbW-h-d6ItuSbebOTeZSXr8PCSl~n59wgfMRa5DdEilILGNZvGpM2kMaesHYBTiXfv1Z40Fv9rmRa~TLR~tefuEPDpkJWud4aAw7t1GTCSyaeXKL23fELMu~CTWMKvQ-TOqfBsbtBiEzUkrl67qgzDUD1HGimpZ3qweyf-w__&Key-Pair-Id=APKAIZL6W5TJO2AK7DOQ" ], "type": "PHOTO" }, { "name": "start_date", "value": "2024-03-25T09:36:42.031Z", "type": "DATE" } ] } ] } ] } ``` ``` -------------------------------- ### Create Project using cURL Source: https://dev.arcsite.com/index_introduction This snippet demonstrates how to create a new project using a cURL command. It requires an API token for authorization and sends project details in JSON format. The response includes the newly created project's ID and details. ```bash curl -X POST 'https://api.arcsite.com/v1/projects' \ -H 'Authorization: Bearer **your_api_token_here**' \ -H 'Content-Type: application/json' \ -d '{ "name":"hahaa", "job_number": "144111", "customer": { "name": "Jack", "phone": "1441", "second_phone": "1122", "email": "c@arcsite.com", "second_email": "s@arcsite.com", "address": { "street": "street", "city": "city", "county": "county", "state": "state", "zip_code": "300433" } }, "work_site_address": { "street": "street", "city": "city", "county": "county", "state": "state", "zip_code": "300433" }, "sales_rep": { "name": "Wang", "email": "h@arcsite.com", "phone": "122122-121" }, "tags": ["tag1", "tag2"] }' ``` -------------------------------- ### GET /v1/drawings/{ID}/field_data Source: https://dev.arcsite.com/index_introduction Retrieves field data values from a specific drawing. You can optionally specify a drawing version ID to get data from a particular version; otherwise, the latest version's data is returned. ```APIDOC ## GET /v1/drawings/{ID}/field_data ### Description Retrieves field data values from a specific drawing. You can optionally specify a drawing version ID to get data from a particular version; otherwise, the latest version's data is returned. ### Method GET ### Endpoint `https://api.arcsite.com/v1/drawings//field_data` ### Parameters #### Path Parameters - **ID** (string) - Required - The ID of the drawing. #### Query Parameters - **drawing_version_id** (string) - Optional - The ID of the drawing version. If provided, field data for this specific version is returned. If omitted, data from the latest version is returned by default. ### Request Example ```bash curl "https://api.arcsite.com/v1/drawings//field_data?drawing_version_id=some_version_id" \ -H "Authorization: Bearer **your_api_token_here**" ``` ### Response #### Success Response (200) - **groups** (List[Group]) - List of field data groups in the drawing. ### Group - **name** (string) - The name of the field data group. - **field_data** (List[FieldData]) - List of field data items within this group. ### FieldData - **name** (string) - The name of the field. - **type** (string) - The type of the field. Possible values: TEXT, SWITCH, SELECT, DATE, etc. - **value** (Any) - The value of the field. The data type depends on the field type: String for TEXT/DATE, Boolean for SWITCH, Array of Strings for SELECT. #### Response Example ```json { "groups": [ { "name": "Default Group", "field_data": [ { "name": "Property Address", "type": "TEXT", "value": "Address 1, Address 2" }, { "name": "No Visible Evidence", "type": "SWITCH", "value": true }, { "name": "Sign by Seller(s) or Owner", "type": "SELECT", "value": ["Seller(s)"] } ] } ] } ``` ``` -------------------------------- ### POST /v1/projects Source: https://dev.arcsite.com/index_introduction This endpoint creates a new project with specified details including name, customer information, addresses, and tags. ```APIDOC ## POST /v1/projects ### Description This endpoint creates a new project with specified details including name, customer information, addresses, and tags. ### Method POST ### Endpoint /v1/projects ### Parameters #### Request Body - **name** (String) - Required - Name of the project. Must be unique across the organization, cannot contain ':' '/' '\', cannot start with '.', and must be less than or equal to 200 characters. - **owner** (String) - Required - Owner of the project. Must be a valid ArcSite username/email from the same organization. - **job_number** (String) - Optional - Job number of the project. - **customer** (Object) - Optional - Customer profile of the project. - **name** (String) - Optional - Customer name. - **phone** (String) - Optional - Customer phone. - **second_phone** (String) - Optional - Customer secondary phone. - **email** (String) - Optional - Customer email. - **second_email** (String) - Optional - Customer secondary email. - **address** (Object) - Optional - Customer address. - **street** (String) - Optional - Street name. - **city** (String) - Optional - City name. - **county** (String) - Optional - County name. - **state** (String) - Optional - State name. - **zip_code** (String) - Optional - Zip Code. - **work_site_address** (Object) - Optional - Worksite address of the project. - **street** (String) - Optional - Street name. - **city** (String) - Optional - City name. - **county** (String) - Optional - County name. - **state** (String) - Optional - State name. - **zip_code** (String) - Optional - Zip Code. - **sales_rep** (Object) - Optional - Sales Representative of the project. - **name** (String) - Optional - Sales representative name. - **email** (String) - Optional - Sales representative email. - **phone** (String) - Optional - Sales representative phone. - **tags** (Array[String]) - Optional - Tags added to this project. ### Request Example ```json { "name":"hahaa", "job_number": "144111", "customer": { "name": "Jack", "phone": "1441", "second_phone": "1122", "email": "c@arcsite.com", "second_email": "s@arcsite.com", "address": { "street": "street", "city": "city", "county": "county", "state": "state", "zip_code": "300433" } }, "work_site_address": { "street": "street", "city": "city", "county": "county", "state": "state", "zip_code": "300433" }, "sales_rep": { "name": "Wang", "email": "h@arcsite.com", "phone": "122122-121" }, "tags": ["tag1", "tag2"] } ``` ### Response #### Success Response (200) - **id** (String) - Unique identifier for the created project. - **name** (String) - Name of the project. - **created_at** (String) - Timestamp when the project was created. - **updated_at** (String) - Timestamp when the project was last updated. - **job_number** (String) - Job number of the project. - **customer** (Object) - Customer details. - **work_site_address** (Object) - Worksite address details. - **sales_rep** (Object) - Sales representative details. - **tags** (Array[String]) - Tags associated with the project. - **archived** (Boolean) - Indicates if the project is archived. #### Response Example ```json { "id": "36029621653386360", "name": "nac", "created_at": "2022-01-16T03:31:39", "updated_at": "2022-01-16T03:31:39", "job_number": "heeloo", "customer": { "name": "hello", "phone": "122112", "second_phone": "122112", "email": "dev@arctuition.com", "second_email": "dev@arctuition.com", "address": { "street": "address", "city": "city", "county": "county", "state": "state", "zip_code": "200544" } }, "work_site_address": { "street": "street", "city": "city", "county": "county", "state": "state", "zip_code": "300433" }, "sales_rep": { "name": "Wang", "email": "dev@arctuition.com", "phone": "122112" }, "tags": ["tag1", "tag2"], "archived": false } ``` ``` -------------------------------- ### Add Project Source: https://dev.arcsite.com/index_introduction Creates a new project with the provided details. This endpoint allows you to define the project's name, operator, and optionally associate customer information, job numbers, work site addresses, sales representatives, and tags. ```APIDOC ## POST /v1/projects ### Description Creates a new project with the provided details. ### Method POST ### Endpoint `https://api.arcsite.com/v1/projects` ### Parameters #### Request Body - **name** (String) - Required - Name of the project. - **operator** (String) - Required - Who updates the project. Must be a valid ArcSite username/email belongs to the same organization. - **customer** (Object) - Optional - Customer profile of the project. - **name** (String) - The name of the customer. - **phone** (String) - The primary phone number of the customer. - **second_phone** (String) - The secondary phone number of the customer. - **email** (String) - The primary email address of the customer. - **second_email** (String) - The secondary email address of the customer. - **address** (Object) - The address of the customer. - **street** (String) - The street address. - **city** (String) - The city. - **county** (String) - The county. - **state** (String) - The state. - **zip_code** (String) - The zip code. - **job_number** (String) - Optional - Job number of the project. - **work_site_address** (Object) - Optional - Worksite address of the project. - **street** (String) - The street address. - **city** (String) - The city. - **county** (String) - The county. - **state** (String) - The state. - **zip_code** (String) - The zip code. - **sales_rep** (Object) - Optional - Sales Representative of the project. - **name** (String) - The name of the sales representative. - **email** (String) - The email address of the sales representative. - **phone** (String) - The phone number of the sales representative. - **tags** (List[String]) - Optional - Tags for this project. If provided, the tags of the project will be replaced by the new provided tags. If the value of tags is set to `[]`, all existing tags on the project will be removed. ### Request Example ```json { "name": "New Project", "operator": "user@arcsite.com", "customer": { "name": "Acme Corp", "email": "contact@acmecorp.com", "address": { "street": "123 Main St", "city": "Anytown", "state": "CA", "zip_code": "90210" } }, "tags": ["urgent", "new"] } ``` ### Response #### Success Response (200) - Returns the created project object. #### Response Example ```json { "id": 1234567890123456, "name": "New Project", "created_at": "2023-10-27T10:00:00Z", "updated_at": "2023-10-27T10:00:00Z", "job_number": null, "customer": { "name": "Acme Corp", "phone": null, "second_phone": null, "email": "contact@acmecorp.com", "second_email": null, "address": { "street": "123 Main St", "city": "Anytown", "county": null, "state": "CA", "zip_code": "90210" } }, "work_site_address": null, "sales_rep": null, "tags": ["urgent", "new"], "archived": false } ``` ``` -------------------------------- ### Project Created Webhook Source: https://dev.arcsite.com/index_introduction Triggered when a new project is created in ArcSite. ```APIDOC ## Project Created Webhook (`project.created`) ### Description This webhook is triggered when a new project is created within the ArcSite platform. It provides details about the newly created project. ### Method POST ### Endpoint /webhook ### Request Body #### Event Type `project.created` ### Project Created Webhook Payload | Parameter | Type | Description | |---|---|---| | id | String | ID of the project | | name | String | Name of the project | | customer | Customer[Optional] | Customer profile of the project | | job_number | String[Optional] | Job number of the project | | work_site_addreess | Address[Optional] | Worksite address of the project | | sales_rep | SalesRep[Optional] | Sales Representative of the project | ### Response Example (Success) ```json { "message": "Webhook received successfully." } ``` ``` -------------------------------- ### Get Project Drawings Source: https://dev.arcsite.com/index_introduction Retrieves a list of drawings associated with a specific project. ```APIDOC ## GET /v1/projects//drawings ### Description Returns drawings of a project. ### Method GET ### Endpoint `https://api.arcsite.com/v1/projects//drawings` ### Parameters #### Path Parameters - **id** (string) - Required - The ID of the project to retrieve drawings from. #### Query Parameters - **page** (integer) - Optional - Request a specific page of drawings. Defaults to 1. - **per_page** (integer) - Optional - The number of drawings to return per page. Defaults to 10. ### Response #### Success Response (200) - **id** (string) - The unique identifier of the drawing. - **name** (string) - The name of the drawing. #### Response Example ```json [ { "id": "36029621653385418", "name": "drawing 1" }, { "id": "36029621653385407", "name": "drawing 2" } ] ``` ``` -------------------------------- ### Get Proposal Payments Source: https://dev.arcsite.com/index_introduction Retrieves a list of payments made for a specific proposal. ```APIDOC ## GET /v1/proposals/{proposal_id}/payments ### Description Returns a list of payments that have been received for the specified proposal. ### Method GET ### Endpoint https://api.arcsite.com/v1/proposals//payments ### Parameters #### Path Parameters - **proposal_id** (String) - Required - The ID of the proposal ### Response #### Success Response (200) - **paid_amount** (Number) - The amount paid - **pay_channel** (String) - Channel through which payment was received. Values: `arcsite_payment` or `mark_as_paid` - **paid_time** (String) - ISO 8601 datetime when payment was received. Present when `pay_channel` is `arcsite_payment` - **paid_date** (String) - Date when payment was recorded (YYYY-MM-DD format). Present when `pay_channel` is `mark_as_paid` - **payment_method** (String) - Method of payment (e.g., "Credit Card", "Check", "ACH") - **status** (String) - Payment status. Values: `succeeded` (payment successful) or `returned` (ACH Return occurred) - **refunded_amount** (Number) - (optional) Amount refunded. Only included for payments that have at least one refund record. Subtract this from `paid_amount` to get the net amount received #### Response Example ```json [ { "paid_amount": 2500.0, "pay_channel": "arcsite_payment", "paid_time": "2025-11-06T10:15:30Z", "payment_method": "Credit Card", "status": "succeeded", "refunded_amount": 500.0 }, { "paid_amount": 1000.0, "pay_channel": "mark_as_paid", "paid_date": "2025-11-07", "payment_method": "Check", "status": "succeeded" } ] ``` ``` -------------------------------- ### Query Proposal Templates Source: https://dev.arcsite.com/index_introduction Retrieves a list of proposal templates available for an organization. Supports pagination with default page size of 10. Returns a JSON array of proposal template objects. ```curl curl "https://api.arcsite.com/v1/proposal_templates" \ -H "Authorization: Bearer **your_api_token_here**" ``` -------------------------------- ### GET /v1/salesforce/connected_product/{arcsite_product_id} Source: https://dev.arcsite.com/index_introduction Retrieves the connected Salesforce Product2 ID for a given ArcSite product ID. ```APIDOC ## GET /v1/salesforce/connected_product/{arcsite_product_id} ### Description Retrieves the connected Salesforce Product2 ID using an ArcSite product ID. This is useful after setting up the Salesforce environment in ArcSite and connecting Salesforce Product2 to ArcSite products. ### Method GET ### Endpoint `https://api.arcsite.com/v1/salesforce/connected_product/` ### Parameters #### Path Parameters - **arcsite_product_id** (String) - Required - The ID of the ArcSite product. ### Response #### Success Response (200) - **connected_product_id** (String) - The ID of the connected Salesforce Product2. #### Response Example ```json { "connected_product_id": "AXh09668400GJgk" } ``` ```