openapi: 3.1.0 info: title: Sea Haven AP API version: 1.0.0 description: "Accounts payable HTTP API for Sea Haven Industries. Liveness, cookie session, and authenticated session smoke under local and AWS runtimes." license: name: Proprietary servers: - url: http://127.0.0.1:8787 description: Local API process used by Vite proxy and unit tests. tags: - name: Health description: Liveness and readiness checks for the API process. - name: Session description: Cookie session via Cognito hosted UI, plus caller identity after upsert. - name: Master data description: Vendors, GL accounts, departments, and user role updates. - name: Invoices description: Invoice headers, coding lines, and uniqueness rules. - name: Documents description: Presigned document upload, confirm, and download against MinIO or S3. - name: Approvals description: Approval policies, step decisions, inbox, comments, and activity. paths: /api/health: $ref: ./paths/health.yaml /api/ready: $ref: ./paths/ready.yaml /api/auth/login: $ref: ./paths/auth-login.yaml /api/auth/callback: $ref: ./paths/auth-callback.yaml /api/auth/refresh: $ref: ./paths/auth-refresh.yaml /api/auth/logout: $ref: ./paths/auth-logout.yaml /api/me: $ref: ./paths/me.yaml /api/vendors: $ref: ./paths/vendors.yaml /api/vendors/{id}: $ref: ./paths/vendors-id.yaml /api/gl-accounts: $ref: ./paths/gl-accounts.yaml /api/gl-accounts/{id}: $ref: ./paths/gl-accounts-id.yaml /api/departments: $ref: ./paths/departments.yaml /api/departments/{id}: $ref: ./paths/departments-id.yaml /api/users: $ref: ./paths/users.yaml /api/users/{id}: $ref: ./paths/users-id.yaml /api/invoices: $ref: ./paths/invoices.yaml /api/invoices/{id}: $ref: ./paths/invoices-id.yaml /api/invoices/{id}/lines: $ref: ./paths/invoices-id-lines.yaml /api/invoices/{id}/documents: $ref: ./paths/invoices-id-documents.yaml /api/documents/{id}: $ref: ./paths/documents-id.yaml /api/documents/{id}/confirmations: $ref: ./paths/documents-id-confirmations.yaml /api/approval-policies: $ref: ./paths/approval-policies.yaml /api/approval-policies/{id}: $ref: ./paths/approval-policies-id.yaml /api/approval-steps/{id}/decisions: $ref: ./paths/approval-steps-id-decisions.yaml /api/inbox: $ref: ./paths/inbox.yaml /api/invoices/{id}/comments: $ref: ./paths/invoices-id-comments.yaml /api/invoices/{id}/activity-logs: $ref: ./paths/invoices-id-activity-logs.yaml components: securitySchemes: cookieAuth: $ref: ./components/security.yaml#/cookieAuth schemas: Error: $ref: ./components/schemas.yaml#/Error HealthResponse: $ref: ./components/schemas.yaml#/HealthResponse ReadyResponse: $ref: ./components/schemas.yaml#/ReadyResponse MeResponse: $ref: ./components/schemas.yaml#/MeResponse Vendor: $ref: ./components/schemas.yaml#/Vendor GlAccount: $ref: ./components/schemas.yaml#/GlAccount Department: $ref: ./components/schemas.yaml#/Department User: $ref: ./components/schemas.yaml#/User Invoice: $ref: ./components/schemas.yaml#/Invoice InvoiceLine: $ref: ./components/schemas.yaml#/InvoiceLine Document: $ref: ./components/schemas.yaml#/Document ApprovalPolicy: $ref: ./components/schemas.yaml#/ApprovalPolicy ApprovalStep: $ref: ./components/schemas.yaml#/ApprovalStep InvoiceComment: $ref: ./components/schemas.yaml#/InvoiceComment ActivityLog: $ref: ./components/schemas.yaml#/ActivityLog security: - cookieAuth: []