openapi: 3.0.3 info: title: Agave Unified Construction Budgets Projects API description: The Agave Unified Construction API provides a single REST API to read and write data from 100+ construction and accounting software systems. It normalizes data across platforms including projects, budgets, contracts, commitments, purchase orders, invoices, cost codes, vendors, timesheets, and employees. version: '1.0' contact: name: Agave API Support url: https://docs.agaveapi.com x-generated-from: documentation servers: - url: https://api.agaveapi.com/v1 description: Production Server - url: https://sandbox.agaveapi.com/v1 description: Sandbox Server security: - apiKey: [] tags: - name: Projects description: Construction project management resources. paths: /projects: get: operationId: listProjects summary: Agave List Projects description: Retrieve a list of construction projects from the linked source system. tags: - Projects parameters: - name: source_system_id in: header description: The linked account source system identifier. required: true schema: type: string example: linked-account-abc123 - name: limit in: query description: Maximum number of results to return. schema: type: integer example: 100 - name: cursor in: query description: Pagination cursor for the next page of results. schema: type: string example: eyJpZCI6MTIzfQ== responses: '200': description: A paginated list of projects. content: application/json: schema: $ref: '#/components/schemas/ProjectList' examples: listProjects200Example: summary: Default listProjects 200 response x-microcks-default: true value: data: - {} next_cursor: example_value count: 1 '401': description: Unauthorized. content: application/json: schema: $ref: '#/components/schemas/Error' examples: listProjects401Example: summary: Default listProjects 401 response x-microcks-default: true value: error: example_value message: example_value request_id: '500123' x-microcks-operation: delay: 0 dispatcher: FALLBACK /projects/{id}: get: operationId: getProject summary: Agave Get Project description: Retrieve a specific construction project by ID. tags: - Projects parameters: - name: source_system_id in: header required: true description: The linked account source system identifier. schema: type: string example: linked-account-abc123 - name: id in: path required: true description: Project identifier. schema: type: string example: proj-500123 responses: '200': description: Project details. content: application/json: schema: $ref: '#/components/schemas/Project' examples: getProject200Example: summary: Default getProject 200 response x-microcks-default: true value: id: '500123' source_id: '500123' name: Example Name number: example_value status: active address: example_value start_date: '2025-03-15' estimated_completion_date: '2025-03-15' total_budget: 99.99 created_at: '2025-03-15T14:30:00Z' updated_at: '2025-03-15T14:30:00Z' '404': description: Project not found. content: application/json: schema: $ref: '#/components/schemas/Error' examples: getProject404Example: summary: Default getProject 404 response x-microcks-default: true value: error: example_value message: example_value request_id: '500123' x-microcks-operation: delay: 0 dispatcher: FALLBACK components: schemas: Project: type: object description: A construction project record from the linked source system. properties: id: type: string description: Agave unified project identifier. example: proj-500123 source_id: type: string description: Project identifier in the source system. example: 12345 name: type: string description: Project name. example: Downtown Office Building number: type: string description: Project number or code. example: 2025-001 status: type: string description: Project status. enum: - active - inactive - completed example: active address: type: string description: Project address. example: 123 Main St, San Francisco, CA 94105 start_date: type: string format: date description: Project start date. example: '2025-01-15' estimated_completion_date: type: string format: date description: Estimated project completion date. example: '2026-06-30' total_budget: type: number description: Total approved project budget in USD. example: 5000000.0 created_at: type: string format: date-time description: Timestamp when the record was created. example: '2025-01-15T09:00:00Z' updated_at: type: string format: date-time description: Timestamp when the record was last updated. example: '2025-04-01T12:00:00Z' ProjectList: type: object description: Paginated list of projects. properties: data: type: array description: Array of project records. items: $ref: '#/components/schemas/Project' example: - example_value next_cursor: type: string description: Cursor for the next page of results. example: eyJpZCI6MTIzfQ== count: type: integer description: Number of records returned. example: 50 Error: type: object description: API error response. properties: error: type: string description: Error code. example: not_found message: type: string description: Human-readable error description. example: The requested resource was not found. request_id: type: string description: Unique request ID for support. example: req-a1b2c3d4e5 securitySchemes: apiKey: type: apiKey in: header name: API-Key description: Agave API key for authentication.