MuleSoft - User Manual
This user manual provides step-by-step instructions for implementing and using the Procore connector. The Procore connector for MuleSoft enables seamless integration between MuleSoft applications and Procore’s construction project management platform. This connector provides a comprehensive set of operations for creating, managing, and interacting with construction projects through Procore’s REST API.
What is Procore?
Procore is a leading construction project management platform that helps construction professionals manage projects, resources, and financials from planning to closeout. The platform provides tools for project management, quality and safety, financial management, and field productivity.
Key Features
- OAuth 2.0 Authentication: Secure connection to Procore API using OAuth 2.0 authorization code flow.
- Project Management: Create and update construction projects with comprehensive project details.
- Company-Specific Operations: All operations support company-specific contexts through Procore Company ID.
- Advanced Error Handling: Robust error handling with detailed logging and proper exception management.
- Geographic Support: Full support for latitude, longitude, and geographic information.
- Custom Fields: Support for custom fields and metadata.
- Cost Code Integration: Standard cost code management and copying.
System Requirements
Component | Version |
Mule Runtime | 4.9.6 or higher |
Java | 17 |
Anypoint Studio | 7.x or higher |
Procore API | v1.0 |
Installation and Setup
Prerequisites
Before you can install the Procore Connector, ensure you have the following:
- MuleSoft Anypoint Studio 7.x or higher installed.
- Mule Runtime 4.9.6 or higher.
- Java 17 or higher.
- Procore developer account with API access.
- OAuth 2.0 credentials from Procore.
Install the Connector
Add Maven Dependency
Add the Procore connector dependency to your project’s pom.xml:
<dependency> <groupId>com.procore.integrations</groupId> <artifactId>procore</artifactId> <version>1.0.0</version> <classifier>mule-plugin</classifier> </dependency>
Configure Properties
Create a properties file (src/main/resources/properties/dev.properties) with your configuration:
# HTTP Listener Configuration http.listener.host=0.0.0.0 http.listener.port=8081 # Procore OAuth Configuration procore.config.oauth.consumer_key=your-consumer-key procore.config.oauth.consumer_secret=your-consumer-secret procore.config.oauth.callback_path=/mule/callback procore.config.oauth.authorize_path=/authorize-procore procore.config.oauth.external_callback_path=http://localhost:8081/mule/callback
Note
Replace your-consumer-key and your-consumer-secret with your actual Procore OAuth credentials.Configuration
Basic Configuration
The Procore Connector requires configuration for both the HTTP listener and OAuth authentication.
HTTP Listener Configuration
<http:listener-config name="HTTP_Listener_config" doc:name="HTTP Listener config"> <http:listener-connection host="${http.listener.host}" port="${http.listener.port}" /> </http:listener-config>
Procore Connector Configuration
<procore:config name="Procore_Config" doc:name="Procore Config" doc:id="8c4f73ce-b817- 4f65-8eae-c6d04dbd53b4"> <procore:connection > <procore:oauth-authorization-code consumerKey="${procore.config.oauth.consumer_key}" consumerSecret="${procore.config.oauth.consumer_secret}" /> <procore:oauth-callback-config listenerConfig="HTTP_Listener_config" callbackPath="${procore.config.oauth.callback_path}" authorizePath="${procore.config.oauth.authorize_path}" externalCallbackUrl="${procore.config.oauth.external_callback_path}" /> </procore:connection> </procore:config>
Note
The OAuth configuration enables secure authentication with Procore’s API using the authorization code flow.Environment-Specific Configuration
Create separate property files for different environments:
Development Environment
http.listener.host=0.0.0.0 http.listener.port=8081 procore.config.oauth.external_callback_path=http://localhost:8081/mule/callback
Staging Environment
http.listener.host=0.0.0.0 http.listener.port=8081 procore.config.oauth.external_callback_path=https://staging.yourdomain.com/mule/callback
Production Environment
http.listener.host=0.0.0.0 http.listener.port=8081 procore.config.oauth.external_callback_path=https://yourdomain.com/mule/callback
Operations
Create Project Operation
The Create Project operation allows you to create new construction projects in Procore.
Parameters
Basic Information
PARAMETER | TYPE | REQUIRED | DESCRIPTION |
Company ID | String | Yes | The Procore Company ID for the project. |
Name | String | Yes | The name of the project. |
Code | String | No | The project code. For example, 'NOB-2024'. |
Description | String | No | A description of the project. |
Active | Boolean | No | Indicates whether the project is active (default: true). |
Project Number | String | No | The project number. For example, 'A-2'. |
Accounting Project Number | String | No | The accounting project number. |
Store Number | String | No | The project store number. |
Designated Market Area | String | No | The market area designated for the project. |
Location Information
PARAMETER | TYPE | REQUIRED | DESCRIPTION |
Address | String | No | The project address. |
City | String | No | The city where the project is located. |
State Code | String | No | The state code (ISO-3166 Alpha-2 format). For example, 'CA' or 'NY'. |
Country Code | String | No | The country code (ISO-3166 Alpha-2 format, default: US). |
ZIP | String | No | The ZIP/postal code. |
County | String | No | The county where the project is located. |
Latitude | String | No | The latitude coordinate of the project. |
Longitude | String | No | The longitude coordinate of the project. |
Time Zone | String | No | The timezone where the project is located. For example, 'America/Los_Angeles'. |
Timeline Information
PARAMETER | TYPE | REQUIRED | DESCRIPTION |
Start Date | String | No | The date that the contract for the project is signed (YYYY-MM-DD). |
Completion Date | String | No | The date that all parties agree that the project meets substantial completion. |
Warranty Start Date | String | No | The warranty start date of the project. |
Warranty End Date | String | No | The warranty end date of the project. |
Estimated Start Date | String | No | The estimated start date of the project. |
Estimated Completion Date | String | No | The estimated completion date of the project. |
Override Start Date | String | No | Custom start date displayed on the Portfolio page. |
Override Start Date Check | Boolean | No | Enable use of override_start_date as Actual Start Date. |
Override End Date | String | No | Custom end date displayed on the Portfolio page. |
Override End Date Check | Boolean | No | Enable use of override_end_date as Projected Finish Date. |
Financial Information
PARAMETER | TYPE | REQUIRED | DESCRIPTION |
Total Value | Double | No | The total amount of construction work performed, planned, or put in place. |
Estimated Value | Double | No | The estimated value of the project. |
Square Feet | Double | No | The total square footage of the project. |
Project Classification
PARAMETER | TYPE | REQUIRED | DESCRIPTION |
Project Type ID | String | No | The project type identifier. |
Project Stage ID | String | No | The project stage identifier. |
Project Bid Type ID | String | No | The project bid type identifier. |
Project Owner Type ID | String | No | The project owner type identifier. |
Project Region ID | String | No | The project region identifier. |
Project Template ID | String | No | The project template identifier for standardization. |
Sector | String | No | The sector of a project. For example, 'Commercial'. |
Work Scope | String | No | The scope of work for a project. For example, 'New Construction'. |
Delivery Method | String | No | The delivery method of a project. For example, 'Design-Build'. |
Organizational Structure
PARAMETER | TYPE | REQUIRED | DESCRIPTION |
Office ID | String | No | The project office identifier. |
Program ID | String | No | The project program identifier. |
Department IDs | List<String> | No | The department IDs associated with the project. |
Parent Job ID | String | No | The project’s parent job identifier. |
Contact and Communication
PARAMETER | TYPE | REQUIRED | DESCRIPTION |
Phone | String | No | The telephone number of the project. |
Public Notes | String | No | The public notes for the project. |
Flag | String | No | The flag of the project. For example, 'URGENT'. |
Integration and Origin
PARAMETER | TYPE | REQUIRED | DESCRIPTION |
ERP Integrated | Boolean | No | Indicates whether the project will be ERP-integrated. |
Origin ID | String | No | External third-party identifier for the project. |
Origin Data | String | No | External third-party data string associated with the project. |
Origin Code | String | No | External third-party code associated with the project. |
Cost Code Configuration
PARAMETER | TYPE | REQUIRED | DESCRIPTION |
Enable Copy of Standard Cost Codes | Boolean | No | Enable copying default standard cost codes during creation (default: false). |
Additional Settings
PARAMETER | TYPE | REQUIRED | DESCRIPTION |
Locale | String | No | The locale for the project. For example, 'en-US'. |
Image ID | String | No | The image identifier of the project. |
Example Usage
<procore:create-project doc:name="Create Project" doc:id="a381945f-95c0-480e-87ed-01528b64e818" config-ref="Procore_Config" companyId="#[payload.company_id]" name="#[payload.name]" address="#[payload.address]" city="#[payload.city]" stateCode="#[payload.state_code]" countryCode="#[payload.country_code]" zip="#[payload.zip]" latitude="#[payload.latitude]" longitude="#[payload.longitude]" startDate="#[payload.start_date]" completionDate="#[payload.completion_date]" warrantyStartDate="#[payload.warranty_start_date]" warrantyEndDate="#[payload.warranty_end_date]" code="#[payload.code]" description="#[payload.description]" totalValue="#[payload.total_value]" estimatedValue="#[payload.estimated_value]" estimatedStartDate="#[payload.estimated_start_date]" estimatedCompletionDate="#[payload.estimated_completion_date]" squareFeet="#[payload.square_feet]" phone="#[payload.phone]" projectNumber="#[payload.project_number]" storeNumber="#[payload.store_number]" accountingProjectNumber="#[payload.accounting_project_number]" locale="#[payload.locale]" timeZone="#[payload.time_zone]" officeId="#[payload.office_id]" parentJobId="#[payload.parent_job_id]" programId="#[payload.program_id]" projectStageId="#[payload.project_stage_id]" projectBidTypeId="#[payload.project_bid_type_id]" projectTypeId="#[payload.project_type_id]" projectOwnerTypeId="#[payload.project_owner_type_id]" projectRegionId="#[payload.project_region_id]" projectTemplateId="#[payload.project_template_id]" imageId="#[payload.image_id]" flag="#[payload.flag]" publicNotes="#[payload.public_notes]" departmentIds="#[payload.department_ids]" originId="#[payload.origin_id]" originData="#[payload.origin_data]" designatedMarketArea="#[payload.designated_market_area]" sector="#[payload.sector]" workScope="#[payload.work_scope]" deliveryMethod="#[payload.delivery_method]" active="#[payload.active]" erpIntegrated="#[payload.erp_integrated]" enableCopyOfStandardCostCodes="#[payload.enable_copy_of_standard_cost_codes]" originCode="#[payload.origin_code]" overrideStartDate="#[payload.override_start_date]" overrideStartDateCheck="#[payload.override_start_date_check]" overrideEndDate="#[payload.override_end_date]" overrideEndDateCheck="#[payload.override_end_date_check]" />
Sample Request
{ "company_id": "562949953437078", "name": "MuleTest Cloud 9 - 31", "address": "123 Main St", "city": "Anytown", "code": "P123", "country_code": "US", "description": "This is mule test project", "start_date": "2025-01-01", "completion_date": "2025-12-31", "total_value": "1000000", "warranty_start_date": "2025-01-01", "warranty_end_date": "2026-01-01", "flag": "1", "phone": "123-456-7890", "project_number": "P3423", "public_notes": "Public Notes", "project_stage_id": "3", "square_feet": "1000", "state_code": "CA", "time_zone": "US/Pacific", "zip": "12345", "parent_job_id": "562949955019589", "program_id": "562949953512759", "project_bid_type_id": "562949953465028", "project_type_id": "562949953482050", "project_owner_type_id": "562949953439322", "project_region_id": "562949953468817", "office_id": "562949953440611", "override_start_date": "2025-01-01", "override_start_date_check": true, "override_end_date": "2026-12-31", "override_end_date_check": true, "department_ids": [ "562949953494810", "562949953495650" ], "estimated_value": "1000000", "estimated_start_date": "2025-01-01", "estimated_completion_date": "2025-12-31", "store_number": "123", "accounting_project_number": "123", "designated_market_area": "Market Area", "erp_integrated": false, "latitude": "37.7749", "longitude": "-124.5924746", "locale": "en", "enable_copy_of_standard_cost_codes": false, "sector": "assembly", "work_scope": "new_construction", "delivery_method": "construction_manager_as_agent_owners_rep", "active": true }
Update Project Operation
The Update Project operation allows you to modify existing construction projects in Procore.
Parameters
Required Parameters
PARAMETER | TYPE | REQUIRED | DESCRIPTION |
Company ID | String | Yes | The Procore Company ID for the project. |
Project ID | String | Yes | The unique identifier of the project to be updated. |
Basic Information
PARAMETER | TYPE | REQUIRED | DESCRIPTION |
Name | String | No | The updated name of the project. |
Code | String | No | The updated project code. For example, 'NOB-2024'. |
Description | String | No | The updated description of the project. |
Active | Boolean | No | Indicates whether the project is active (default: true). |
Project Number | String | No | The updated project number. |
Accounting Project Number | String | No | The updated accounting project number. |
Store Number | String | No | The updated project store number. |
Designated Market Area | String | No | The updated market area designated for the project. |
Location Information
PARAMETER | TYPE | REQUIRED | DESCRIPTION |
Address | String | No | The updated project address. |
City | String | No | The updated city where the project is located. |
State Code | String | No | The updated state code (ISO-3166 Alpha-2 format). For example, 'CA' or 'NY'. |
Country Code | String | No | The updated country code (ISO-3166 Alpha-2 format, default: US). |
ZIP | String | No | The updated ZIP/postal code. |
County | String | No | The county where the project is located. |
Latitude | String | No | The updated latitude coordinate of the project. |
Longitude | String | No | The updated longitude coordinate of the project. |
Time Zone | String | No | The updated timezone where the project is located. For example, 'America/Los_Angeles'. |
Timeline Information
PARAMETER | TYPE | REQUIRED | DESCRIPTION |
Start Date | String | No | The updated date that the contract for the project is signed (YYYY-MM-DD). |
Completion Date | String | No | The updated date that all parties agree that the project meets substantial completion. |
Warranty Start Date | String | No | The updated warranty start date of the project. |
Warranty End Date | String | No | The updated warranty end date of the project. |
Estimated Start Date | String | No | The updated estimated start date of the project. |
Estimated Completion Date | String | No | The updated estimated completion date of the project. |
Financial Information
PARAMETER | TYPE | REQUIRED | DESCRIPTION |
Total Value | Double | No | The updated total amount of construction work performed, planned, or put in place. |
Estimated Value | Double | No | The updated estimated value of the project. |
Square Feet | Double | No | The updated total square footage of the project. |
Project Classification
PARAMETER | TYPE | REQUIRED | DESCRIPTION |
Project Type ID | String | No | The updated project type identifier. |
Project Stage ID | String | No | The updated project stage identifier. |
Project Bid Type ID | String | No | The updated project bid type identifier. |
Project Owner Type ID | String | No | The updated project owner type identifier. |
Project Region ID | String | No | The updated project region identifier. |
Project Template ID | String | No | The updated project template identifier for standardization. |
Sector | String | No | The updated sector of a project. For example, 'Commercial'. |
Work Scope | String | No | The updated scope of work for a project. For example, 'New Construction'. |
Delivery Method | String | No | The updated delivery method of a project. For example, 'Design-Build'. |
Organizational Structure
PARAMETER | TYPE | REQUIRED | DESCRIPTION |
Office ID | String | No | The updated project office identifier. |
Program ID | String | No | The updated project program identifier. |
Department IDs | List<String> | No | The updated department IDs associated with the project. |
Parent Job ID | String | No | The updated project’s parent job identifier. |
Contact and Communication
PARAMETER | TYPE | REQUIRED | DESCRIPTION |
Phone | String | No | The updated telephone number of the project. |
Fax | String | No | The fax number for the project. |
Public Notes | String | No | The updated public notes for the project. |
Flag | String | No | The updated flag of the project. For example, 'URGENT'. |
Integration and Origin
PARAMETER | TYPE | REQUIRED | DESCRIPTION |
ERP Integrated | Boolean | No | Indicates whether the project will be ERP-integrated. |
Origin ID | String | No | The updated external third-party identifier for the project. |
Origin Data | String | No | The updated external third-party data string associated with the project. |
Origin Code | String | No | The updated external third-party code associated with the project. |
Cost Code Configuration
PARAMETER | TYPE | REQUIRED | DESCRIPTION |
Standard Cost Code List ID | String | No | The identifier for the Standard Cost Code List. |
Additional Settings
PARAMETER | TYPE | REQUIRED | DESCRIPTION |
Locale | String | No | The updated locale for the project. |
Image ID | String | No | The updated image identifier of the project. |
Example Usage
<procore:update-project doc:name="Update Project" doc:id="3e28c0b7-77af-4a97-a809-a4a6a63d7bd7" config-ref="Procore_Config" companyId="#[payload.company_id]" name="#[payload.name]" active="false" address="#[payload.address]" city="#[payload.city]" countryCode="#[payload.country_code]" description="#[payload.description]" startDate="#[payload.start_date]" completionDate="#[payload.completion_date]" totalValue="#[payload.total_value]" warrantyStartDate="#[payload.warranty_start_date]" warrantyEndDate="#[payload.warranty_end_date]" flag="#[payload.flag]" locale="#[payload.locale]" phone="#[payload.phone]" fax="#[payload.fax]" publicNotes="#[payload.public_notes]" projectStageId="#[payload.project_stage_id]" squareFeet="#[payload.square_feet]" stateCode="#[payload.state_code]" timeZone="#[payload.time_zone]" zip="#[payload.zip]" parentJobId="#[payload.parent_job_id]" projectBidTypeId="#[payload.project_bid_type_id]" projectOwnerTypeId="#[payload.project_owner_type_id]" projectRegionId="#[payload.project_region_id]" originId="#[payload.origin_id]" originData="#[payload.origin_data]" originCode="#[payload.origin_code]" sector="#[payload.sector]" workScope="#[payload.work_scope]" deliveryMethod="#[payload.delivery_method]" projectTemplateId="#[payload.project_template_id]" projectNumber="#[payload.project_number]" programId="#[payload.program_id]" storeNumber="#[payload.store_number]" accountingProjectNumber="#[payload.accounting_project_number]" designatedMarketArea="#[payload.designated_market_area]" estimatedValue="#[payload.estimated_value]" estimatedStartDate="#[payload.estimated_start_date]" estimatedCompletionDate="#[payload.estimated_completion_date]" projectTypeId="#[payload.project_type_id]" imageId="#[payload.image_id]" officeId="#[payload.office_id]" projectId="#[payload.project_id]" county="#[payload.county]" standardCostCodeListId="#[payload.standard_cost_code_list_id]" departmentIds="#[payload.department_ids]" />
Sample Request
{ "company_id": "562949953437078", "project_id": "562949955035825", "active": true, "address": "123 Main St Updated", "city": "Anytown Updated", "country_code": "US", "county": "Santa Barbara County updated", "description": "This is mule test project updated", "erp_integrated": true, "standard_cost_code_list_id": "562949953436338", "start_date": "2025-02-01", "completion_date": "2025-12-30", "total_value": 100001, "warranty_start_date": "2025-02-01", "warranty_end_date": "2026-01-30", "fax": "0161 999 8888", "flag": "1", "locale": "en", "name": "MuleTest9 - 17 Updated", "office_id": 562949953582263, "phone": "123-456-7890", "project_number": "P3424", "public_notes": "Public Notes Updated", "project_stage_id": 562949953421313, "square_feet": 1001, "state_code": "AZ", "time_zone": "US/Mountain", "zip": "54321", "parent_job_id": 562949955019589, "program_id": 562949953520454, "project_bid_type_id": 562949953465027, "project_type_id": 562949953482049, "project_owner_type_id": 562949953439321, "project_region_id": 562949953470887, "project_template_id": null, "department_ids": [ 562949953495657, 562949953495655 ], "estimated_value": 1000001, "estimated_start_date": "2025-02-01", "estimated_completion_date": "2025-12-30", "store_number": "1234", "accounting_project_number": "1234", "designated_market_area": "Southeast", "sector": "auto_service", "work_scope": "renovation_alteration", "delivery_method": "integrated_project_delivery" }
Authentication
OAuth 2.0 Setup
The Procore Connector uses OAuth 2.0 authorization code flow for secure authentication.
Step 1: Create Procore OAuth Application
Follow these steps using the Procore Developer documentation to create your OAuth application:
- Open the Creating an App article in the Procore Developer documentation.
- Follow the step-by-step guide to create a new OAuth application.
- During the setup process, configure the following:
- Application Name: Enter a descriptive name for your application.
- Redirect URI: Enter your callback URL. For example, http://localhost:8081/mule/callback.
- Scopes: Select all required scopes. For example, read:projects and write:projects.
- Save the application and note your Client ID and Client Secret.
Note
The redirect URL must match the externalCallbackUrl in your connector configuration. For detailed instructions, refer to Procore Developer's Creating an App article.Step 2: Configure OAuth in MuleSoft
<procore:config name="Procore_Config" doc:name="Procore Config"> <procore:connection> <procore:oauth-authorization-code consumerKey="${procore.config.oauth.consumer_key}" consumerSecret="${procore.config.oauth.consumer_secret}"/> <procore:oauth-callback-config listenerConfig="HTTP_Listener_config" callbackPath="/mule/callback" authorizePath="/authorize-procore" externalCallbackUrl="http://localhost:8081/mule/callback" /> </procore:connection> </procore:config>
Step 3: Authorization Flow
- Start your MuleSoft application.
- Go to http://localhost:8081/authorize-procore.
You will be redirected to the Procore authorization page. - Log in with your Procore credentials and authorize the application.
You will be redirected back to your callback URL. The connector will automatically handle the token exchange and storage.
Note
The connector automatically refreshes OAuth tokens when they expire.Error Handling
Error Types
The Procore Connector provides comprehensive error handling with specific error types:
ERROR TYPE | CODE | DESCRIPTION |
BAD_REQUEST | 400 | Invalid request parameters or malformed data. |
UNAUTHORIZED | 401 | Invalid or expired authentication credentials. |
FORBIDDEN | 403 | Insufficient permissions to access the resource. |
NOT_FOUND | 404 | The requested resource was not found. |
CONFLICT | 409 | The request conflicts with the current state of the resource. |
TOO_MANY_REQUESTS | 429 | API rate limit has been exceeded. |
CONNECTIVITY | N/A | Unable to connect to Procore services. |
UNEXPECTED_ERROR | N/A | Unknown or unclassified errors. |
Troubleshooting
Common Issues
Authentication Problems
- UNAUTHORIZED Error: Check that your OAuth consumer key and secret are correct.
- ACCESS_TOKEN_MISSING: Verify that the OAuth flow completed successfully.
- OAUTH_STATE_MISSING: Ensure that the OAuth callback configuration is correct.
- Scope Issues: Make sure your Procore application has the required scopes.
API Errors
- BAD_REQUEST Error: Verify that all required parameters are provided and that their data types are correct.
- INVALID_REQUEST Error: Check the request's format and structure.
- FORBIDDEN Error: Ensure that your Procore user has the required permissions.
- TOO_MANY_REQUESTS Error: Implement retry logic with exponential backoff.
Resource Errors
- NOT_FOUND Error: Verify that the project or company ID exists and is accessible.
- CONFLICT Error: Check the current state of the resource before performing update operations.
- UNPROCESSABLE_ENTITY Error: Review business logic validation rules.
Connection Issues
- CONNECTIVITY Error: Check your network connectivity and firewall settings.
- SERVICE_UNAVAILABLE Error: The Procore service may be temporarily down.
- REQUEST_TIMEOUT Error: Increase the timeout settings in your configuration.
- GATEWAY_TIMEOUT Error: Check your proxy or load balancer configuration.
Debugging
Enable Debug Logging
Add the following logger configuration to enable debug logging:
<logger name="com.procore.mule" level="DEBUG"/>
Common Debug Information
- Request/Response Logs: Log API request and response details.
- Token Information: Log token refresh events and OAuth state.
- Parameter Validation: Log parameter validation results.
- Error Details: Log detailed error information with Procore error types.
- Connection Events: Log connection creation and failure events.
Support
- Procore API Documentation: developers.procore.com.
- MuleSoft Documentation: docs.mulesoft.com.
- Community Forums: Procore Developer Community.
- Support Tickets: Contact Procore Developer Support.
Best Practices
Development
- Use Secure Properties: Store sensitive configuration in secure properties.
- Implement Error Handling: Always implement proper error handling for all operations.
- Validate Input: Validate all input parameters before making API calls.
- Log Operations: Log operation attempts for debugging and monitoring.
- Test Thoroughly: Test all operations with various parameter combinations.
Production
- Monitor Performance: Monitor API response times and error rates.
- Implement Retry Logic: Implement retry logic for transient errors.
- Use Connection Pooling: Leverage connection pooling for better performance.
- Secure Configuration: Use secure properties for sensitive data.
- Regular Updates: Keep the connector updated to the latest version.
Testing
- Unit Tests: Write unit tests for all operations.
- Integration Tests: Test with the actual Procore API.
- Error Scenarios: Test error handling scenarios.
- Performance Tests: Test with realistic data volumes.
- Security Tests: Test authentication and authorization.
Appendix
API Endpoints
OPERATION | METHOD | ENDPOINT | DESCRIPTION |
Create Project | POST | /rest/v1.0/projects | Create a new project |
Update Project | PATCH | /rest/v1.0/projects/{id} | Update an existing project |
Data Types
TYPE | DESCRIPTION | EXAMPLE |
String | Text values | "Project Name" |
Boolean | True/false values | true |
Double | Decimal numbers | 1000000.0 |
Integer | Whole numbers | 50000 |
List<String> | Array of strings | ["dept1", "dept2"] |
Date | Date values | "2024-01-01" |
Glossary
TERM | DEFINITION |
Procore | Construction project management platform. |
OAuth 2.0 | Authorization protocol for secure API access. |
Company ID | Unique identifier for a Procore company. |
Project ID | Unique identifier for a Procore project. |
Standard Cost Codes | Predefined cost categories for construction projects. |
Custom Fields | User-defined fields for project customization. |
Procore Error Codes | Specific error types that are defined by the Procore connector for error handling. |
BAD_REQUEST | Error indicating invalid request parameters or malformed data. |
UNAUTHORIZED | Error indicating invalid or expired authentication credentials. |
FORBIDDEN | Error indicating insufficient permissions to access a resource. |
NOT_FOUND | Error indicating the requested resource was not found. |
CONFLICT | Error indicating request conflicts with current resource state. |
TOO_MANY_REQUESTS | Error indicating API rate limit has been exceeded. |
CONNECTIVITY | Error indicating inability to connect to Procore services. |
UNEXPECTED_ERROR | Generic error for unknown or unclassified errors. |