openapi: 3.2.0 info: title: OpenGov Purchase Order Line Item API version: 1.0.0 description: API for managing purchase orders, line items, splits, and vendors. servers: - url: https://api-purchase-order.procurement.opengov.com description: Production - url: https://api-purchase-order.procurement.ogstaging.us description: Staging - url: https://api-purchase-order.procurement.ogintegration.us description: Integration security: - platformApiKey: [] - platformBearerToken: [] tags: - name: Line Item paths: /api/v1/po/entities/{entityId}/purchase-orders/{poId}/line-items: post: tags: - Line Item operationId: lineItem.create parameters: - name: entityId in: path schema: type: string description: The UUID of the Platform entity default: 04eb277c-f9cd-42b0-9610-0f068f6aaea1 format: uuid pattern: ^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$ required: true description: The UUID of the Platform entity - name: poId in: path schema: $ref: '#/components/schemas/NumberFromString' required: true responses: '201': description: Success content: application/json: schema: type: object required: - data properties: data: type: object required: - lineItem properties: lineItem: $ref: '#/components/schemas/LineItemModel.json' additionalProperties: false additionalProperties: false '400': description: The request did not match the expected schema content: application/json: schema: type: object properties: status: type: integer description: HTTP status code example: 400 code: type: string description: Machine-readable error code example: ValidationError detail: type: string description: Human-readable error description. For 400 ValidationError with exactly one field issue, matches that field's `detail`; otherwise a summary (e.g. multiple validation issues). example: The request body failed validation. fieldErrors: type: array description: Per-field validation errors (present for 400 validation errors) items: type: object properties: parameter: type: string description: Dot-path to the field example: lineItems.0.lineItemSplits.1 detail: type: string description: Human-readable validation message example: 'Account 101-5100 has insufficient budget: requested 500.00, available 200.00' code: type: string description: Machine-readable rule identifier example: BUDGET_INSUFFICIENT data: type: object description: Structured context for the error (account codes, amounts, IDs, etc.) additionalProperties: true example: accountNumber: 101-5100 accountPseudoKey: GF-101-5100 requestedAmount: 500 availableAmount: 200 required: - parameter - detail required: - status - code - detail '401': description: AuthError content: application/json: schema: type: object properties: status: type: integer description: HTTP status code example: 401 code: type: string description: Machine-readable error code example: AuthenticationError detail: type: string description: Human-readable error description. For 400 ValidationError with exactly one field issue, matches that field's `detail`; otherwise a summary (e.g. multiple validation issues). example: Authentication is required to access this resource. required: - status - code - detail '403': description: UnauthorizedError content: application/json: schema: type: object properties: status: type: integer description: HTTP status code example: 403 code: type: string description: Machine-readable error code example: AuthorizationError detail: type: string description: Human-readable error description. For 400 ValidationError with exactly one field issue, matches that field's `detail`; otherwise a summary (e.g. multiple validation issues). example: You do not have permission to perform this action. required: - status - code - detail '404': description: EntityNotFoundError content: application/json: schema: type: object properties: status: type: integer description: HTTP status code example: 404 code: type: string description: Machine-readable error code example: PurchaseOrderNotFound detail: type: string description: Human-readable error description. For 400 ValidationError with exactly one field issue, matches that field's `detail`; otherwise a summary (e.g. multiple validation issues). example: Purchase order with id 123 was not found. required: - status - code - detail '500': description: InfrastructureError content: application/json: schema: type: object properties: status: type: integer description: HTTP status code example: 500 code: type: string description: Machine-readable error code example: InternalServerError detail: type: string description: Human-readable error description. For 400 ValidationError with exactly one field issue, matches that field's `detail`; otherwise a summary (e.g. multiple validation issues). example: An unexpected error occurred while processing your request. Please try again later. required: - status - code - detail description: Creates a new line item with optional nested splits. Line items can only be added to Purchase Orders in DRAFT status. Maximum 5 splits per line item. Returns 201 with Location header on success. summary: Create a new line item on a purchase order requestBody: content: application/json: schema: $ref: '#/components/schemas/LineItemModel.jsonCreate' required: true /api/v1/po/entities/{entityId}/purchase-orders/{poId}/line-items/{lineItemId}: put: tags: - Line Item operationId: lineItem.update parameters: - name: entityId in: path schema: type: string description: The UUID of the Platform entity default: 04eb277c-f9cd-42b0-9610-0f068f6aaea1 format: uuid pattern: ^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$ required: true description: The UUID of the Platform entity - name: poId in: path schema: $ref: '#/components/schemas/NumberFromString' required: true - name: lineItemId in: path schema: $ref: '#/components/schemas/NumberFromString' required: true responses: '200': description: Success content: application/json: schema: type: object required: - data properties: data: type: object required: - lineItem properties: lineItem: $ref: '#/components/schemas/LineItemModel.json' additionalProperties: false additionalProperties: false '400': description: The request did not match the expected schema content: application/json: schema: type: object properties: status: type: integer description: HTTP status code example: 400 code: type: string description: Machine-readable error code example: ValidationError detail: type: string description: Human-readable error description. For 400 ValidationError with exactly one field issue, matches that field's `detail`; otherwise a summary (e.g. multiple validation issues). example: The request body failed validation. fieldErrors: type: array description: Per-field validation errors (present for 400 validation errors) items: type: object properties: parameter: type: string description: Dot-path to the field example: lineItems.0.lineItemSplits.1 detail: type: string description: Human-readable validation message example: 'Account 101-5100 has insufficient budget: requested 500.00, available 200.00' code: type: string description: Machine-readable rule identifier example: BUDGET_INSUFFICIENT data: type: object description: Structured context for the error (account codes, amounts, IDs, etc.) additionalProperties: true example: accountNumber: 101-5100 accountPseudoKey: GF-101-5100 requestedAmount: 500 availableAmount: 200 required: - parameter - detail required: - status - code - detail '401': description: AuthError content: application/json: schema: type: object properties: status: type: integer description: HTTP status code example: 401 code: type: string description: Machine-readable error code example: AuthenticationError detail: type: string description: Human-readable error description. For 400 ValidationError with exactly one field issue, matches that field's `detail`; otherwise a summary (e.g. multiple validation issues). example: Authentication is required to access this resource. required: - status - code - detail '403': description: UnauthorizedError content: application/json: schema: type: object properties: status: type: integer description: HTTP status code example: 403 code: type: string description: Machine-readable error code example: AuthorizationError detail: type: string description: Human-readable error description. For 400 ValidationError with exactly one field issue, matches that field's `detail`; otherwise a summary (e.g. multiple validation issues). example: You do not have permission to perform this action. required: - status - code - detail '404': description: EntityNotFoundError content: application/json: schema: type: object properties: status: type: integer description: HTTP status code example: 404 code: type: string description: Machine-readable error code example: PurchaseOrderNotFound detail: type: string description: Human-readable error description. For 400 ValidationError with exactly one field issue, matches that field's `detail`; otherwise a summary (e.g. multiple validation issues). example: Purchase order with id 123 was not found. required: - status - code - detail '500': description: InfrastructureError content: application/json: schema: type: object properties: status: type: integer description: HTTP status code example: 500 code: type: string description: Machine-readable error code example: InternalServerError detail: type: string description: Human-readable error description. For 400 ValidationError with exactly one field issue, matches that field's `detail`; otherwise a summary (e.g. multiple validation issues). example: An unexpected error occurred while processing your request. Please try again later. required: - status - code - detail description: Updates a line item and its splits. Line items can only be updated on Purchase Orders in DRAFT status. Splits with id are updated, splits without id are inserted, existing splits omitted are soft-deleted. Maximum 5 splits per line item. summary: Update a line item on a purchase order requestBody: content: application/json: schema: $ref: '#/components/schemas/LineItemModel.jsonUpdate' required: true delete: tags: - Line Item operationId: lineItem.delete parameters: - name: entityId in: path schema: type: string description: The UUID of the Platform entity default: 04eb277c-f9cd-42b0-9610-0f068f6aaea1 format: uuid pattern: ^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$ required: true description: The UUID of the Platform entity - name: poId in: path schema: $ref: '#/components/schemas/NumberFromString' required: true - name: lineItemId in: path schema: $ref: '#/components/schemas/NumberFromString' required: true responses: '204': description: Success '400': description: The request did not match the expected schema content: application/json: schema: type: object properties: status: type: integer description: HTTP status code example: 400 code: type: string description: Machine-readable error code example: ValidationError detail: type: string description: Human-readable error description. For 400 ValidationError with exactly one field issue, matches that field's `detail`; otherwise a summary (e.g. multiple validation issues). example: The request body failed validation. fieldErrors: type: array description: Per-field validation errors (present for 400 validation errors) items: type: object properties: parameter: type: string description: Dot-path to the field example: lineItems.0.lineItemSplits.1 detail: type: string description: Human-readable validation message example: 'Account 101-5100 has insufficient budget: requested 500.00, available 200.00' code: type: string description: Machine-readable rule identifier example: BUDGET_INSUFFICIENT data: type: object description: Structured context for the error (account codes, amounts, IDs, etc.) additionalProperties: true example: accountNumber: 101-5100 accountPseudoKey: GF-101-5100 requestedAmount: 500 availableAmount: 200 required: - parameter - detail required: - status - code - detail '401': description: AuthError content: application/json: schema: type: object properties: status: type: integer description: HTTP status code example: 401 code: type: string description: Machine-readable error code example: AuthenticationError detail: type: string description: Human-readable error description. For 400 ValidationError with exactly one field issue, matches that field's `detail`; otherwise a summary (e.g. multiple validation issues). example: Authentication is required to access this resource. required: - status - code - detail '403': description: UnauthorizedError content: application/json: schema: type: object properties: status: type: integer description: HTTP status code example: 403 code: type: string description: Machine-readable error code example: AuthorizationError detail: type: string description: Human-readable error description. For 400 ValidationError with exactly one field issue, matches that field's `detail`; otherwise a summary (e.g. multiple validation issues). example: You do not have permission to perform this action. required: - status - code - detail '404': description: EntityNotFoundError content: application/json: schema: type: object properties: status: type: integer description: HTTP status code example: 404 code: type: string description: Machine-readable error code example: PurchaseOrderNotFound detail: type: string description: Human-readable error description. For 400 ValidationError with exactly one field issue, matches that field's `detail`; otherwise a summary (e.g. multiple validation issues). example: Purchase order with id 123 was not found. required: - status - code - detail '500': description: InfrastructureError content: application/json: schema: type: object properties: status: type: integer description: HTTP status code example: 500 code: type: string description: Machine-readable error code example: InternalServerError detail: type: string description: Human-readable error description. For 400 ValidationError with exactly one field issue, matches that field's `detail`; otherwise a summary (e.g. multiple validation issues). example: An unexpected error occurred while processing your request. Please try again later. required: - status - code - detail description: Soft-deletes a line item and its splits. Only allowed on Draft POs by the PO creator. Subtracts line item amount from PO total. Returns 204 No Content on success. summary: Delete a line item on a purchase order /api/v1/po/entities/{entityId}/purchase-orders/{poId}/line-items/close: post: tags: - Line Item operationId: lineItem.close parameters: - name: entityId in: path schema: type: string description: The UUID of the Platform entity default: 04eb277c-f9cd-42b0-9610-0f068f6aaea1 format: uuid pattern: ^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$ required: true description: The UUID of the Platform entity - name: poId in: path schema: $ref: '#/components/schemas/NumberFromString' required: true responses: '204': description: Success '400': description: The request did not match the expected schema content: application/json: schema: type: object properties: status: type: integer description: HTTP status code example: 400 code: type: string description: Machine-readable error code example: ValidationError detail: type: string description: Human-readable error description. For 400 ValidationError with exactly one field issue, matches that field's `detail`; otherwise a summary (e.g. multiple validation issues). example: The request body failed validation. fieldErrors: type: array description: Per-field validation errors (present for 400 validation errors) items: type: object properties: parameter: type: string description: Dot-path to the field example: lineItems.0.lineItemSplits.1 detail: type: string description: Human-readable validation message example: 'Account 101-5100 has insufficient budget: requested 500.00, available 200.00' code: type: string description: Machine-readable rule identifier example: BUDGET_INSUFFICIENT data: type: object description: Structured context for the error (account codes, amounts, IDs, etc.) additionalProperties: true example: accountNumber: 101-5100 accountPseudoKey: GF-101-5100 requestedAmount: 500 availableAmount: 200 required: - parameter - detail required: - status - code - detail '401': description: AuthError content: application/json: schema: type: object properties: status: type: integer description: HTTP status code example: 401 code: type: string description: Machine-readable error code example: AuthenticationError detail: type: string description: Human-readable error description. For 400 ValidationError with exactly one field issue, matches that field's `detail`; otherwise a summary (e.g. multiple validation issues). example: Authentication is required to access this resource. required: - status - code - detail '403': description: UnauthorizedError content: application/json: schema: type: object properties: status: type: integer description: HTTP status code example: 403 code: type: string description: Machine-readable error code example: AuthorizationError detail: type: string description: Human-readable error description. For 400 ValidationError with exactly one field issue, matches that field's `detail`; otherwise a summary (e.g. multiple validation issues). example: You do not have permission to perform this action. required: - status - code - detail '404': description: EntityNotFoundError content: application/json: schema: type: object properties: status: type: integer description: HTTP status code example: 404 code: type: string description: Machine-readable error code example: PurchaseOrderNotFound detail: type: string description: Human-readable error description. For 400 ValidationError with exactly one field issue, matches that field's `detail`; otherwise a summary (e.g. multiple validation issues). example: Purchase order with id 123 was not found. required: - status - code - detail '500': description: InfrastructureError content: application/json: schema: type: object properties: status: type: integer description: HTTP status code example: 500 code: type: string description: Machine-readable error code example: InternalServerError detail: type: string description: Human-readable error description. For 400 ValidationError with exactly one field issue, matches that field's `detail`; otherwise a summary (e.g. multiple validation issues). example: An unexpected error occurred while processing your request. Please try again later. required: - status - code - detail description: Closes one or more line items on an Issued PO. Liquidates remaining encumbrance on closed lines (split → line item → PO rollup). Auto-closes the PO with 'Auto-Closed' label when all non-deleted lines are closed. Already-closed lines are silently skipped. Returns 204 No Content on success. summary: Close line items in bulk requestBody: content: application/json: schema: type: object required: - lineItemIds properties: lineItemIds: type: array minItems: 1 items: type: number additionalProperties: false required: true components: schemas: ValueOrPercent: type: string enum: - Value - Percent description: Indicates whether the input is an absolute value or a percentage title: Value or Percent LineItemModel.jsonCreate: type: object required: - lineItemType properties: lineItemType: $ref: '#/components/schemas/LineItemType' description: anyOf: - type: string description: a string at most 2048 character(s) long title: maxLength(2048) maxLength: 2048 - type: 'null' quantity: anyOf: - $ref: '#/components/schemas/Decimal_11_5' - type: 'null' unitOfMeasure: anyOf: - type: string description: a string at most 64 character(s) long title: maxLength(64) maxLength: 64 - type: 'null' unitRate: anyOf: - $ref: '#/components/schemas/Decimal_13_5' - type: 'null' referenceNumber: anyOf: - type: string description: a string at most 50 character(s) long title: maxLength(50) maxLength: 50 - type: 'null' toleranceAmountValue: anyOf: - $ref: '#/components/schemas/Decimal_18_2' - type: 'null' toleranceAmountType: anyOf: - $ref: '#/components/schemas/ValueOrPercent' - type: 'null' toleranceQuantityValue: anyOf: - $ref: '#/components/schemas/Decimal_18_5' - type: 'null' toleranceQuantityType: anyOf: - $ref: '#/components/schemas/ValueOrPercent' - type: 'null' toleranceUnitRateValue: anyOf: - $ref: '#/components/schemas/Decimal_13_5' - type: 'null' toleranceUnitRateType: anyOf: - $ref: '#/components/schemas/ValueOrPercent' - type: 'null' taxValue: anyOf: - $ref: '#/components/schemas/Decimal_18_2' - type: 'null' taxType: anyOf: - $ref: '#/components/schemas/ValueOrPercent' - type: 'null' discountValue: anyOf: - $ref: '#/components/schemas/Decimal_18_2' - type: 'null' discountType: anyOf: - $ref: '#/components/schemas/ValueOrPercent' - type: 'null' freightValue: anyOf: - $ref: '#/components/schemas/Decimal_18_2' - type: 'null' freightType: anyOf: - $ref: '#/components/schemas/ValueOrPercent' - type: 'null' miscellaneousValue: anyOf: - $ref: '#/components/schemas/Decimal_18_2' - type: 'null' miscellaneousType: anyOf: - $ref: '#/components/schemas/ValueOrPercent' - type: 'null' includeInThreeWayMatch: type: boolean includeAmountInMatch: type: boolean lineItemSplits: type: array items: $ref: '#/components/schemas/LineItemSplitModel.jsonCreate' additionalProperties: false title: LineItemModel.jsonCreate Decimal_18_5: type: string title: Decimal (18,5) LineItemSplitModel.jsonCreate: type: object required: [] properties: accountNumber: anyOf: - type: string - type: 'null' accountPseudoKey: anyOf: - type: string description: a string at most 64 character(s) long title: maxLength(64) maxLength: 64 - type: 'null' amount: anyOf: - $ref: '#/components/schemas/SignedDecimal_18_2' - type: 'null' eProjectAccountId: anyOf: - type: string description: a string at most 64 character(s) long title: maxLength(64) maxLength: 64 - type: 'null' projectAccountNumber: anyOf: - type: string description: a string at most 64 character(s) long title: maxLength(64) maxLength: 64 - type: 'null' projectAccountDescription: anyOf: - type: string description: a string at most 256 character(s) long title: maxLength(256) maxLength: 256 - type: 'null' reimbursable: type: boolean additionalProperties: false title: LineItemSplitModel.jsonCreate LineItemSplitModel.jsonUpdate: type: object required: [] properties: id: type: number accountNumber: anyOf: - type: string - type: 'null' accountPseudoKey: anyOf: - type: string description: a string at most 64 character(s) long title: maxLength(64) maxLength: 64 - type: 'null' amount: anyOf: - $ref: '#/components/schemas/SignedDecimal_18_2' - type: 'null' eProjectAccountId: anyOf: - type: string description: a string at most 64 character(s) long title: maxLength(64) maxLength: 64 - type: 'null' projectAccountNumber: anyOf: - type: string description: a string at most 64 character(s) long title: maxLength(64) maxLength: 64 - type: 'null' projectAccountDescription: anyOf: - type: string description: a string at most 256 character(s) long title: maxLength(256) maxLength: 256 - type: 'null' reimbursable: type: boolean additionalProperties: false title: LineItemSplitModel.jsonUpdate LineItemSplitModel.json: type: object required: - id - poLineItemId - createdAt - updatedAt properties: id: type: number poLineItemId: type: number accountNumber: anyOf: - type: string - type: 'null' accountPseudoKey: anyOf: - type: string description: a string at most 64 character(s) long title: maxLength(64) maxLength: 64 - type: 'null' amount: anyOf: - $ref: '#/components/schemas/SignedDecimal_18_2' - type: 'null' eProjectAccountId: anyOf: - type: string description: a string at most 64 character(s) long title: maxLength(64) maxLength: 64 - type: 'null' projectAccountNumber: anyOf: - type: string description: a string at most 64 character(s) long title: maxLength(64) maxLength: 64 - type: 'null' projectAccountDescription: anyOf: - type: string description: a string at most 256 character(s) long title: maxLength(256) maxLength: 256 - type: 'null' reimbursable: type: boolean encumberedAmount: $ref: '#/components/schemas/SignedDecimal_18_2' encLiquidatedAccrualAmount: $ref: '#/components/schemas/SignedDecimal_18_2' openEncumbranceAmount: anyOf: - $ref: '#/components/schemas/SignedDecimal_18_2' - type: 'null' percentAmount: anyOf: - $ref: '#/components/schemas/Decimal_18_2' - type: 'null' displayId: anyOf: - type: number - type: 'null' createdAt: $ref: '#/components/schemas/DateTimeUtc' updatedAt: $ref: '#/components/schemas/DateTimeUtc' additionalProperties: false title: LineItemSplitModel.json Decimal_13_5: type: string title: Decimal (13,5) Decimal_18_2: type: string title: Decimal (18,2) LineItemType: type: string enum: - Item - Service - Tax - Discount - Freight - Miscellaneous description: 'Line item type: Item, Service, Tax, Discount, Freight, Miscellaneous' title: Line Item Type Decimal_11_5: type: string title: Decimal (11,5) DateTimeUtc: type: string description: a string to be decoded into a DateTime.Utc SignedDecimal_18_5: type: string title: Signed Decimal (18,5) LineItemModel.jsonUpdate: type: object required: [] properties: lineItemType: $ref: '#/components/schemas/LineItemType' description: anyOf: - type: string description: a string at most 2048 character(s) long title: maxLength(2048) maxLength: 2048 - type: 'null' quantity: anyOf: - $ref: '#/components/schemas/Decimal_11_5' - type: 'null' unitOfMeasure: anyOf: - type: string description: a string at most 64 character(s) long title: maxLength(64) maxLength: 64 - type: 'null' unitRate: anyOf: - $ref: '#/components/schemas/Decimal_13_5' - type: 'null' referenceNumber: anyOf: - type: string description: a string at most 50 character(s) long title: maxLength(50) maxLength: 50 - type: 'null' toleranceAmountValue: anyOf: - $ref: '#/components/schemas/Decimal_18_2' - type: 'null' toleranceAmountType: anyOf: - $ref: '#/components/schemas/ValueOrPercent' - type: 'null' toleranceQuantityValue: anyOf: - $ref: '#/components/schemas/Decimal_18_5' - type: 'null' toleranceQuantityType: anyOf: - $ref: '#/components/schemas/ValueOrPercent' - type: 'null' toleranceUnitRateValue: anyOf: - $ref: '#/components/schemas/Decimal_13_5' - type: 'null' toleranceUnitRateType: anyOf: - $ref: '#/components/schemas/ValueOrPercent' - type: 'null' taxValue: anyOf: - $ref: '#/components/schemas/Decimal_18_2' - type: 'null' taxType: anyOf: - $ref: '#/components/schemas/ValueOrPercent' - type: 'null' discountValue: anyOf: - $ref: '#/components/schemas/Decimal_18_2' - type: 'null' discountType: anyOf: - $ref: '#/components/schemas/ValueOrPercent' - type: 'null' freightValue: anyOf: - $ref: '#/components/schemas/Decimal_18_2' - type: 'null' freightType: anyOf: - $ref: '#/components/schemas/ValueOrPercent' - type: 'null' miscellaneousValue: anyOf: - $ref: '#/components/schemas/Decimal_18_2' - type: 'null' miscellaneousType: anyOf: - $ref: '#/components/schemas/ValueOrPercent' - type: 'null' includeInThreeWayMatch: type: boolean includeAmountInMatch: type: boolean lineItemSplits: type: array items: $ref: '#/components/schemas/LineItemSplitModel.jsonUpdate' additionalProperties: false title: LineItemModel.jsonUpdate SignedDecimal_18_2: type: string title: Signed Decimal (18,2) NumberFromString: type: string description: a string to be decoded into a number LineItemModel.json: type: object required: - id - poPurchaseOrderId - lineItemType - lineItemSplits - createdAt - updatedAt properties: id: type: number poPurchaseOrderId: type: number lineItemType: $ref: '#/components/schemas/LineItemType' description: anyOf: - type: string description: a string at most 2048 character(s) long title: maxLength(2048) maxLength: 2048 - type: 'null' quantity: anyOf: - $ref: '#/components/schemas/Decimal_11_5' - type: 'null' unitOfMeasure: anyOf: - type: string description: a string at most 64 character(s) long title: maxLength(64) maxLength: 64 - type: 'null' unitRate: anyOf: - $ref: '#/components/schemas/Decimal_13_5' - type: 'null' referenceNumber: anyOf: - type: string description: a string at most 50 character(s) long title: maxLength(50) maxLength: 50 - type: 'null' acceptedQuantity: $ref: '#/components/schemas/Decimal_18_5' availableAcceptedQuantity: anyOf: - $ref: '#/components/schemas/SignedDecimal_18_5' - type: 'null' toleranceAmountValue: anyOf: - $ref: '#/components/schemas/Decimal_18_2' - type: 'null' toleranceAmountType: anyOf: - $ref: '#/components/schemas/ValueOrPercent' - type: 'null' toleranceAmount: anyOf: - $ref: '#/components/schemas/SignedDecimal_18_2' - type: 'null' toleranceQuantityValue: anyOf: - $ref: '#/components/schemas/Decimal_18_5' - type: 'null' toleranceQuantityType: anyOf: - $ref: '#/components/schemas/ValueOrPercent' - type: 'null' toleranceQuantity: anyOf: - $ref: '#/components/schemas/Decimal_18_5' - type: 'null' toleranceUnitRateValue: anyOf: - $ref: '#/components/schemas/Decimal_13_5' - type: 'null' toleranceUnitRateType: anyOf: - $ref: '#/components/schemas/ValueOrPercent' - type: 'null' toleranceUnitRate: anyOf: - $ref: '#/components/schemas/Decimal_13_5' - type: 'null' taxValue: anyOf: - $ref: '#/components/schemas/Decimal_18_2' - type: 'null' taxType: anyOf: - $ref: '#/components/schemas/ValueOrPercent' - type: 'null' taxAmount: anyOf: - $ref: '#/components/schemas/SignedDecimal_18_2' - type: 'null' discountValue: anyOf: - $ref: '#/components/schemas/Decimal_18_2' - type: 'null' discountType: anyOf: - $ref: '#/components/schemas/ValueOrPercent' - type: 'null' discountAmount: anyOf: - $ref: '#/components/schemas/SignedDecimal_18_2' - type: 'null' freightValue: anyOf: - $ref: '#/components/schemas/Decimal_18_2' - type: 'null' freightType: anyOf: - $ref: '#/components/schemas/ValueOrPercent' - type: 'null' freightAmount: anyOf: - $ref: '#/components/schemas/SignedDecimal_18_2' - type: 'null' miscellaneousValue: anyOf: - $ref: '#/components/schemas/Decimal_18_2' - type: 'null' miscellaneousType: anyOf: - $ref: '#/components/schemas/ValueOrPercent' - type: 'null' miscellaneousAmount: anyOf: - $ref: '#/components/schemas/SignedDecimal_18_2' - type: 'null' includeInThreeWayMatch: type: boolean includeAmountInMatch: type: boolean extendedAmount: anyOf: - $ref: '#/components/schemas/SignedDecimal_18_2' - type: 'null' amount: anyOf: - $ref: '#/components/schemas/SignedDecimal_18_2' - type: 'null' encumberedAmount: $ref: '#/components/schemas/SignedDecimal_18_2' matchedQuantity: $ref: '#/components/schemas/SignedDecimal_18_5' matchedAmount: $ref: '#/components/schemas/SignedDecimal_18_2' invoicedQuantity: $ref: '#/components/schemas/SignedDecimal_18_5' invoicedAmount: $ref: '#/components/schemas/SignedDecimal_18_2' paidAmount: $ref: '#/components/schemas/SignedDecimal_18_2' encLiquidatedAccrualAmount: $ref: '#/components/schemas/SignedDecimal_18_2' availableQuantity: anyOf: - $ref: '#/components/schemas/SignedDecimal_18_5' - type: 'null' availableAmount: $ref: '#/components/schemas/SignedDecimal_18_2' openEncumbranceAmount: anyOf: - $ref: '#/components/schemas/SignedDecimal_18_2' - type: 'null' isClosed: type: boolean closedAt: anyOf: - type: string - type: 'null' closedBy: anyOf: - type: string description: a Universally Unique Identifier format: uuid pattern: ^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$ - type: 'null' displayId: anyOf: - type: number - type: 'null' lineItemSplits: type: array items: $ref: '#/components/schemas/LineItemSplitModel.json' createdAt: $ref: '#/components/schemas/DateTimeUtc' updatedAt: $ref: '#/components/schemas/DateTimeUtc' additionalProperties: false title: LineItemModel.json securitySchemes: platformApiKey: description: OpenGov Platform API Key type: apiKey name: Authorization in: header platformBearerToken: type: http scheme: bearer