LogoLogo
  • PAVE OpenAPI Overview
  • How PAVE Works
    • Capture Link
    • Guided Capture
    • Customer Disclosures
    • Identified Vehicle Information
    • Captured Photos
    • Text Notifications
    • Inspection Results
    • Condition Report (PDF)
    • Detected Damages
    • Grading
    • Languages
    • Accuracy & Limitations
  • INTEGRATIONS
    • Developer Docs
      • Authentication
        • Generate Access Token
      • Sessions
        • POST Create Session
        • GET Session Data
        • GET Session Photos
        • GET Session Notes
        • GET Session Results
        • PUT Update Session
        • DELETE Session
      • Webhooks
        • GET All Callbacks
        • GET View a Callback
        • POST Create New Callback
        • PUT Update a Callback
        • DELETE a Callback
      • Deep Linking
        • Deep Link with React Native App
        • Deep Link Native App
        • Deep Linking with Shareable Links
      • Pass-Through Additional User Information
      • Tracking Your Sessions
      • User Session Lifecycle
      • Developer Testing
    • Account Optional Add-ons
      • Capture Only Theme (CAPT)
        • Skip Pictures
      • Right-Hand-Drive Capture Flow
  • MANAGING YOUR ACCOUNT
    • Your Guide to PAVE's Account and Enterprise Dashboards
  • Hotspots
    • PAVE Hotspots API
    • Activating PAVE Hotspots
    • Developer Docs
      • Authentication
        • Generate Access Token
      • Sessions
        • POST Create Session
        • POST Upload Photos
        • GET Results
  • OTHER RESOURCES
    • PAVE Capture Troubleshooting Guide
      • iPhone (iOS) Issues
        • Does my mobile phone work with PAVE?
        • Can't Access Camera - Incorrect Web Browser Usage
        • Can't Access Camera - Camera Permission Not Enabled
        • Camera Screen is Locked and won't Rotate
        • Inspection Get's Stuck
        • Inspection Won't Begin or Complete
        • Getting Back to an In-Progress Inspection
        • Why do I keep getting asked to retake pictures?
      • Android Phone Issues
        • Does my mobile phone work with PAVE?
        • Can't Access Camera - Incorrect Web Browser Usage
        • Can't Access Camera - Camera Permission Not Enabled
        • Camera Screen is Locked and won't Rotate
        • Inspection Gets Stuck
        • Inspection Won't Begin or Complete
        • Getting Back to an In-Progress Inspection
        • Why do I keep getting asked to retake pictures?
    • Policies
      • Service Level Agreement and Standards
      • Service Delivery Sub-Processors & Processors
      • API Strategy and Architecture
      • Information Security Policy
        • Data Quality Guideline
        • Data Retention Policy
        • Backup and Disaster Recovery
        • Data Residency
        • Data Access Control
Powered by GitBook
On this page
  • PAVE API Architecture
  • PAVE API Change Management
  1. OTHER RESOURCES
  2. Policies

API Strategy and Architecture

The scope of this PAVE API Strategy and Architecture section is to help answer these frequently asked questions:

“Describe your API architecture (REST, SOAP). Also, describe the technology stack and hosting model for your system including the APIs.”

“How often are changes to customer-facing APIs, UI, or dashboards implemented and what is your process for notifying customers of changes?”

PAVE API Architecture

The PAVE API is organized around the RESTful (REST) construction on the PHP Laravel Framework with PHP 8.X. It serves requests via HTTPS using Laravel Octane with Swoole library (an event-driven asynchronous & coroutine-based concurrency C++ engine for PHP). Our API returns JSON-encoded responses and uses the OpenAPI Specification (OAS) that defines a language-agnostic interface to REST APIs.

Repository and Unit of Work classes are used for decoupling the infrastructure to access databases and utilizing event-driven and queue-job architecture with RabbitMQ and Redis.

The PAVE API services are deployed on Google Cloud Kubernetes.

PAVE API Change Management

We always avoid making any "Breaking Changes" to our production APIs. However, we can make these changes for any specified license on request (when any customer-specific customization becomes required) without impacting other accounts. By "Breaking Changes," we mean any structural change that would break any customer's application. In contrast, we will frequently add functionality and new objects that support our continuous improvements and new product features.

When we evolve the API such that it requires changes to our Data Contracts and requires migration by our customer (by implementing "Breaking Changes"), we will always deploy this as a new version of our API to allow customers to migrate at their own discretion and schedule. We manage this using the URI Path by putting a number in the path of the URI with the prefix "v." This allows our customer to use both versions simultaneously as they complete their development and UAT testing on the newly released version.

For Example, Our current endpoint is:

https://openapi.paveapi.com/v1/sessions 

When we need to make breaking changes, we would reversion this to become:

https://openapi.paveapi.com/v2/sessions 

The PAVE product team includes a complete QA department that tests all functionality in staging and, when approved, to go to production, these same tests get completed again once released.

Each function of our API constantly gets tested for:

  • Send the request with necessary input data

  • Get the response having output data

  • Verify that the response returned as expected in the requirement

PreviousService Delivery Sub-Processors & ProcessorsNextInformation Security Policy

Last updated 4 months ago