Procurify purchase-orders API

The purchase-orders API from Procurify — 7 operation(s) for purchase-orders.

OpenAPI Specification

procurify-purchase-orders-api-openapi.yml Raw ↑
openapi: 3.0.3
info:
  title: Procurify API Documentation account-codes purchase-orders API
  version: ''
  description: '

    # Disclaimer


    - Procurify’s API is evolving and is subject to change at any time. Additionally, aspects of the API are undocumented, including certain methods, events, and properties. Given that both documented and undocumented aspects of the Procurify API may change at any time, the client relies on the API at their own risk.

    - Client (and/or client’s representative) is responsible for building, testing, and maintaining any API connection between Procurify and any other tool.  Procurify’s responsibility strictly involves providing support on clarifications in regards to the issued API document.

    - Procurify’s API is offered on an “as is” and “as available” basis, without warranties of any kind. By accepting this agreement, you agree that you have read the current API documentation, and accept the API functionality in its current state including current limitations. For questions and clarification around the documentation, please contact support@procurify.com.

    - In accordance with Section 2.(b) of our Subscription Services Agreement, Procurify reserves the right to deny access to our API at any time. If your API requests are too large and time out, contact us immediately to avoid possible suspension of access.

    - You may not attempt to reverse engineer or otherwise derive source code, trade secrets, or know-how in the Procurify API or portion thereof. You may not use the Procurify API to replicate or compete with core products or services offered by Procurify.

    '
servers:
- url: https://{user_domain}.procurify.com
  description: Your Procurify domain
  variables:
    user_domain:
      default: your-domain
      description: Your procurify domain
tags:
- name: purchase-orders
paths:
  /api/v2/purchase_order/revise/{procurify_PO}/:
    put:
      operationId: purchase_order_revise_update
      description: Deprecated method for revising a purchase order. Pending removable after November 16, 2023. Use `PUT` on `/api/v3/purchase-orders/{id}` instead.
      summary: Revise a Purchase Order
      parameters:
      - in: query
        name: confirm_duplicate_external_po_number
        schema:
          type: string
          enum:
          - 'False'
          - 'True'
          default: 'False'
        description: Mechanism to check for duplicate custom PO number. If there is a duplicate, API will fail unless this query param is set to True.
      - in: query
        name: format
        schema:
          type: string
          enum:
          - csv
          - json
      - in: path
        name: procurify_PO
        schema:
          type: integer
          title: Procurify PO Number
        description: A unique integer value identifying this po.
        required: true
      tags:
      - purchase-orders
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PurchaseOrderUpdateRequest'
          application/x-www-form-urlencoded:
            schema:
              $ref: '#/components/schemas/PurchaseOrderUpdateRequest'
          ? ''
          : schema:
              $ref: '#/components/schemas/PurchaseOrderUpdateRequest'
          application/xml:
            schema:
              $ref: '#/components/schemas/PurchaseOrderUpdateRequest'
          multipart/form-data:
            schema:
              $ref: '#/components/schemas/PurchaseOrderUpdateRequest'
        required: true
      security:
      - RemoteAuthentication: []
      - M2MAuthentication: []
      - BasicAuthentication: []
      - cookieAuth: []
      deprecated: true
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PurchaseOrderDetailSerializerSingle'
            text/csv:
              schema:
                $ref: '#/components/schemas/PurchaseOrderDetailSerializerSingle'
          description: ''
  /api/v2/purchase_orders/{id}/:
    get:
      operationId: purchase_orders_retrieve
      description: '**Purchase Order State Codes**


        | Order Type          | Code      |

        |---------------------|-----------|

        | PURCHASED           | 0         |

        | CANCELLED           | 1         |

        | (legacy code)       | 2         |

        | CLOSED              | 3         |

        | PAID                | 4         |

        | REOPENED            | 5         |'
      summary: Get Purchase Order by ID (with items)
      parameters:
      - in: query
        name: format
        schema:
          type: string
          enum:
          - csv
          - json
      - in: path
        name: id
        schema:
          type: string
        description: Procurify PO or UUID
        required: true
      tags:
      - purchase-orders
      security:
      - RemoteAuthentication: []
      - M2MAuthentication: []
      - BasicAuthentication: []
      - cookieAuth: []
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiNestedEditDeletePurchaseOrderDetail'
            text/csv:
              schema:
                $ref: '#/components/schemas/ApiNestedEditDeletePurchaseOrderDetail'
          description: ''
  /api/v2/purchase_orders/{role}/{status}/:
    get:
      operationId: purchase_orders_list
      summary: Get Purchase Orders by Role & Status
      parameters:
      - in: query
        name: account_code
        schema:
          type: integer
        description: Account Code
      - in: query
        name: contract
        schema:
          type: integer
        description: Contract
      - in: query
        name: currency
        schema:
          type: integer
        description: Currency
      - in: query
        name: date_0
        schema:
          type: string
          format: date
        description: 'YYYY-MM-DD (start date): Filter POs by Created Date range'
      - in: query
        name: date_1
        schema:
          type: string
          format: date
        description: 'YYYY-MM-DD (end date): Filter POs by Created Date range'
      - in: query
        name: expiry_date_0
        schema:
          type: string
          format: date
        description: Expiry Date
      - in: query
        name: expiry_date_1
        schema:
          type: string
          format: date
        description: Expiry Date
      - in: query
        name: has_blanket_order_items
        schema:
          type: boolean
      - in: query
        name: modified_date_0
        schema:
          type: string
          format: date
        description: 'YYYY-MM-DD (start date): Filter POs by Last Modified Date range'
      - in: query
        name: modified_date_1
        schema:
          type: string
          format: date
        description: 'YYYY-MM-DD (end date): Filter POs by Last Modified Date range'
      - in: query
        name: order_by
        schema:
          type: string
        description: Sort by field
      - in: query
        name: page
        schema:
          type: integer
      - in: query
        name: page_size
        schema:
          type: integer
      - in: query
        name: pref_vendor
        schema:
          type: integer
        description: ID of Vendor
      - in: query
        name: promise_date_0
        schema:
          type: string
          format: date
        description: 'YYYY-MM-DD (start date): Filter POs by Promise Date range'
      - in: query
        name: promise_date_1
        schema:
          type: string
          format: date
        description: 'YYYY-MM-DD (end date): Filter POs by Promise Date range'
      - in: query
        name: purchase_order
        schema:
          type: integer
        description: Purchase Order
      - in: query
        name: purchaser
        schema:
          type: integer
        description: Purchaser
      - in: query
        name: requester
        schema:
          type: integer
        description: Requester
      - in: path
        name: role
        schema:
          type: string
          enum:
          - purchased
          - receivable
        required: true
      - in: path
        name: status
        schema:
          type: string
          enum:
          - all
          - cancelled
          - closed
          - open
          - paid
          - partial
        required: true
      - in: query
        name: total_0
        schema:
          type: string
          format: decimal
          pattern: ^-?\d{0,17}(?:\.\d{0,2})?$
          title: Total Cost
        description: Total
      - in: query
        name: total_1
        schema:
          type: string
          format: decimal
          pattern: ^-?\d{0,17}(?:\.\d{0,2})?$
          title: Total Cost
        description: Total
      tags:
      - purchase-orders
      security:
      - RemoteAuthentication: []
      - M2MAuthentication: []
      - BasicAuthentication: []
      - cookieAuth: []
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/POWithListPurchaseOrderDocs'
            text/csv:
              schema:
                $ref: '#/components/schemas/POWithListPurchaseOrderDocs'
          description: ''
  /api/v3/purchase-orders/{procurify_PO}/:
    put:
      operationId: purchase_orders_update
      summary: Update a Purchase Order
      parameters:
      - in: query
        name: format
        schema:
          type: string
          enum:
          - csv
          - json
      - in: path
        name: procurify_PO
        schema:
          type: integer
          title: Procurify PO Number
        description: A unique integer value identifying this po.
        required: true
      tags:
      - purchase-orders
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PurchaseOrderUpdateRequest'
          application/x-www-form-urlencoded:
            schema:
              $ref: '#/components/schemas/PurchaseOrderUpdateRequest'
          ? ''
          : schema:
              $ref: '#/components/schemas/PurchaseOrderUpdateRequest'
          application/xml:
            schema:
              $ref: '#/components/schemas/PurchaseOrderUpdateRequest'
          multipart/form-data:
            schema:
              $ref: '#/components/schemas/PurchaseOrderUpdateRequest'
        required: true
      security:
      - RemoteAuthentication: []
      - M2MAuthentication: []
      - BasicAuthentication: []
      - cookieAuth: []
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PurchaseOrderUpdateSerializerSingle'
            text/csv:
              schema:
                $ref: '#/components/schemas/PurchaseOrderUpdateSerializerSingle'
          description: ''
  /api/v3/purchase-orders/{procurify_PO}/close/:
    post:
      operationId: purchase_orders_close_create
      summary: Close a Purchase Order
      parameters:
      - in: query
        name: format
        schema:
          type: string
          enum:
          - csv
          - json
      - in: path
        name: procurify_PO
        schema:
          type: integer
          title: Procurify PO Number
        description: A unique integer value identifying this po.
        required: true
      tags:
      - purchase-orders
      security:
      - RemoteAuthentication: []
      - M2MAuthentication: []
      - BasicAuthentication: []
      - cookieAuth: []
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PurchaseOrderReadDocsSerializerSingle'
            text/csv:
              schema:
                $ref: '#/components/schemas/PurchaseOrderReadDocsSerializerSingle'
          description: ''
  /api/v3/purchase-orders/{procurify_PO}/reopen/:
    post:
      operationId: purchase_orders_reopen_create
      summary: Reopen a Purchase Order
      parameters:
      - in: query
        name: format
        schema:
          type: string
          enum:
          - csv
          - json
      - in: path
        name: procurify_PO
        schema:
          type: integer
          title: Procurify PO Number
        description: A unique integer value identifying this po.
        required: true
      tags:
      - purchase-orders
      security:
      - RemoteAuthentication: []
      - M2MAuthentication: []
      - BasicAuthentication: []
      - cookieAuth: []
      responses:
        '200':
          description: No response body
  /api/v3/purchase-orders/billing-history/:
    get:
      operationId: purchase_orders_billing_history_retrieve
      summary: View billing history of a Purchase Order
      parameters:
      - in: query
        name: format
        schema:
          type: string
          enum:
          - csv
          - json
      tags:
      - purchase-orders
      security:
      - RemoteAuthentication: []
      - M2MAuthentication: []
      - BasicAuthentication: []
      - cookieAuth: []
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PurchaseOrderBillingHistorySerializerList'
            text/csv:
              schema:
                $ref: '#/components/schemas/PurchaseOrderBillingHistorySerializerList'
          description: ''
components:
  schemas:
    SessionCreate:
      type: object
      properties:
        creditcard:
          type: integer
          title: Credit Card
        balance:
          type: string
          format: decimal
          pattern: ^-?\d{0,9}(?:\.\d{0,2})?$
        statement_date:
          type: string
          format: date-time
          nullable: true
      required:
      - creditcard
    SimpleUser:
      type: object
      properties:
        id:
          type: integer
          readOnly: true
        firstName:
          type: string
          maxLength: 100
        lastName:
          type: string
          maxLength: 100
        email:
          type: string
          format: email
          maxLength: 254
        profile_image:
          type: string
          nullable: true
      required:
      - email
    PaymentMethod:
      type: object
      properties:
        id:
          type: integer
          readOnly: true
        name:
          type: string
          maxLength: 100
        description:
          type: string
          nullable: true
        active:
          type: boolean
      required:
      - name
    OrderItemTypeEnum:
      enum:
      - 0
      - 1
      - 2
      type: integer
      description: '* `0` - One Time

        * `1` - Recurring

        * `2` - Blanket'
    UserProfileRead:
      type: object
      properties:
        id:
          type: integer
          readOnly: true
        firstName:
          type: string
          maxLength: 100
        lastName:
          type: string
          maxLength: 100
        email:
          type: string
          format: email
          maxLength: 254
        department:
          allOf:
          - $ref: '#/components/schemas/SimpleDepartment'
          nullable: true
          type: object
      required:
      - department
      - email
    Attachment:
      type: object
      properties:
        id:
          type: integer
          readOnly: true
        uuid:
          type: string
          format: uuid
        file:
          type: string
        name:
          type: string
          maxLength: 255
        user:
          type: integer
        description:
          type: string
          maxLength: 1000
        mimetype:
          type: string
          maxLength: 100
        length:
          type: integer
          maximum: 2147483647
          minimum: -2147483648
          nullable: true
        sha1_hash:
          type: string
          maxLength: 40
        created_at:
          type: string
          format: date-time
          readOnly: true
      required:
      - file
      - user
      - uuid
    PermissionsEditDelete:
      type: object
      properties:
        can_edit:
          type: boolean
        can_delete:
          type: boolean
      required:
      - can_delete
      - can_edit
    PurchaseOrderLineItemRead:
      type: object
      properties:
        PO:
          type: array
          items:
            type: integer
            title: PO
        PO_line_num:
          type: integer
          maximum: 2147483647
          minimum: -2147483648
        account:
          $ref: '#/components/schemas/AccountRead'
        accountCode:
          type: string
          maxLength: 100
        active:
          type: boolean
        approved_currency_rate:
          type: string
          format: decimal
          pattern: ^-?\d{0,9}(?:\.\d{0,6})?$
          nullable: true
        approved_datetime:
          type: string
          format: date-time
          nullable: true
        approved_price:
          type: string
          format: decimal
          pattern: ^-?\d{0,13}(?:\.\d{0,8})?$
          nullable: true
        approved_quantity:
          type: number
          format: double
        approved_shipping_amount:
          type: string
          format: decimal
          pattern: ^-?\d{0,13}(?:\.\d{0,8})?$
          nullable: true
        approved_tax_amount:
          type: string
          format: decimal
          pattern: ^-?\d{0,13}(?:\.\d{0,8})?$
          nullable: true
        attachments:
          type: array
          items:
            $ref: '#/components/schemas/OrderItemAttachment'
          nullable: true
        catalog_item:
          allOf:
          - $ref: '#/components/schemas/CatalogItemRead'
          nullable: true
          type: object
        created_at:
          type: string
          format: date-time
          readOnly: true
        currency:
          $ref: '#/components/schemas/CurrencySummary'
        dateInvoiced:
          type: string
          format: date-time
          nullable: true
        external_id:
          type: string
          description: External id of the order item
          maxLength: 100
        hot:
          type: boolean
        id:
          type: integer
          readOnly: true
        inventoryItem:
          type: integer
          nullable: true
        is_active:
          type: boolean
        item_attachments:
          type: array
          items:
            $ref: '#/components/schemas/Attachment'
        last_changed_by:
          type: integer
          nullable: true
          title: Last changed by user
        last_modified:
          type: string
          format: date-time
          readOnly: true
        lineComment:
          type: string
          nullable: true
        name:
          type: string
          maxLength: 255
        num:
          type: string
          maxLength: 50
        orderNum:
          type: integer
          nullable: true
        order_number:
          type: integer
          readOnly: true
          nullable: true
        po_note:
          type: string
          title: Comment
        po_version:
          type: integer
          maximum: 2147483647
          minimum: -2147483648
        pref_vendor:
          $ref: '#/components/schemas/VendorRead'
        price:
          type: string
          format: decimal
          pattern: ^-?\d{0,13}(?:\.\d{0,8})?$
        purchase_order:
          type: integer
          title: Procurify PO Number
          nullable: true
        purchaser:
          $ref: '#/components/schemas/UserSummary'
        quantity:
          type: number
          format: double
        receivedFailQty:
          type: number
          format: double
        receivedPassQty:
          type: number
          format: double
        shipping_amount:
          type: string
          format: decimal
          pattern: ^-?\d{0,13}(?:\.\d{0,8})?$
          nullable: true
        sku:
          type: string
          maxLength: 100
        status:
          nullable: true
          minimum: -2147483648
          maximum: 2147483647
          oneOf:
          - $ref: '#/components/schemas/OrderItemStatusEnum'
          - $ref: '#/components/schemas/NullEnum'
          type: integer
        tax_amount:
          type: string
          format: decimal
          pattern: ^-?\d{0,13}(?:\.\d{0,8})?$
          nullable: true
        total_cost:
          type: string
          format: decimal
          pattern: ^-?\d{0,16}(?:\.\d{0,2})?$
        unit:
          type: string
          maxLength: 30
        updated_at:
          type: string
          format: date-time
          readOnly: true
        vendor:
          type: string
          readOnly: true
        receive_method:
          allOf:
          - $ref: '#/components/schemas/ReceiveMethodEnum'
          minimum: 0
          maximum: 65535
        type:
          allOf:
          - $ref: '#/components/schemas/OrderItemTypeEnum'
          minimum: 0
          maximum: 65535
        blanket:
          allOf:
          - $ref: '#/components/schemas/BlanketOrderItemRead'
          readOnly: true
        comments:
          type: array
          items:
            $ref: '#/components/schemas/Comment'
          readOnly: true
        confirmation_status:
          type: integer
          nullable: true
          readOnly: true
        confirmation_status_description:
          type: string
          nullable: true
          readOnly: true
        cost_details:
          allOf:
          - $ref: '#/components/schemas/CostDetails'
          nullable: true
          readOnly: true
          type: object
        custom_fields:
          type: array
          items:
            $ref: '#/components/schemas/CustomFieldValueRead'
          readOnly: true
        date_required:
          type: string
          format: date-time
          readOnly: true
        fully_received_actual_receive_date:
          type: string
          format: date
          readOnly: true
        has_sibling_items:
          type: boolean
          readOnly: true
        line_comment:
          type: string
          readOnly: true
        logs:
          type: array
          items:
            $ref: '#/components/schemas/MasterLogger'
          readOnly: true
        order_description:
          type: string
          readOnly: true
        order_status:
          type: integer
          readOnly: true
        order_uuid:
          type: string
          format: uuid
          readOnly: true
        punchout_supplier_icon:
          type: string
          readOnly: true
          nullable: true
        punchout_supplier_name:
          type: string
          readOnly: true
          nullable: true
        punchout_system:
          type: integer
          nullable: true
          readOnly: true
        punchout_vendor_reference:
          type: integer
          nullable: true
          readOnly: true
        punchout_supplier_can_update_quantity:
          type: boolean
          readOnly: true
        purchase_order_number:
          type: string
          readOnly: true
        purchase_order_uuid:
          type: string
          format: uuid
          readOnly: true
        purchased_currency_rate:
          type: string
          format: decimal
          pattern: ^-?\d{0,9}(?:\.\d{0,6})?$
          readOnly: true
          default: '0.000000'
        recurrence:
          allOf:
          - $ref: '#/components/schemas/RecurringOrderItem'
          nullable: true
          type: object
        requester:
          allOf:
          - $ref: '#/components/schemas/SimpleUserSummary'
          readOnly: true
        spend_allocation:
          type: array
          items:
            $ref: '#/components/schemas/AllocationRead'
          readOnly: true
        submitted_date:
          type: string
          format: date-time
          readOnly: true
        taxes:
          type: array
          items:
            $ref: '#/components/schemas/Adjustment'
          nullable: true
        receive_log_count:
          type: integer
          readOnly: true
        approval_history:
          type: array
          items:
            $ref: '#/components/schemas/MasterLogger'
          readOnly: true
        flags:
          type: array
          items:
            $ref: '#/components/schemas/FlagRead'
          readOnly: true
        approved_total_cost:
          type: string
          format: decimal
          pattern: ^-?\d{0,10}(?:\.\d{0,8})?$
      required:
      - account
      - approved_datetime
      - approved_quantity
      - approved_total_cost
      - attachments
      - catalog_item
      - currency
      - item_attachments
      - name
      - num
      - pref_vendor
      - price
      - purchaser
      - quantity
      - receivedFailQty
      - receivedPassQty
      - recurrence
      - unit
    POWithListPurchaseOrderDocs:
      type: object
      properties:
        metadata:
          $ref: '#/components/schemas/PurchaseOrderListMeta'
        data:
          type: array
          items:
            $ref: '#/components/schemas/PurchaseOrderDocs'
      required:
      - data
      - metadata
    SimpleUserProfile:
      type: object
      properties:
        id:
          type: integer
          readOnly: true
        firstName:
          type: string
          maxLength: 100
        lastName:
          type: string
          maxLength: 100
        email:
          type: string
          format: email
          maxLength: 254
        role:
          allOf:
          - $ref: '#/components/schemas/MinimalRoleRead'
          readOnly: true
        profile_image:
          type: string
          nullable: true
      required:
      - email
    SetupStageEnum:
      enum:
      - COMP
      - DEPT
      - USER
      - COA
      - BDGT
      - APPR
      - FIN
      type: string
      description: '* `COMP` - Company

        * `DEPT` - Department

        * `USER` - User

        * `COA` - Chart_of_Accounts

        * `BDGT` - Budget_Control

        * `APPR` - Approver

        * `FIN` - Finished'
    AccountCodeRead:
      type: object
      properties:
        id:
          type: integer
          readOnly: true
        applied_accounts_count:
          type: integer
          readOnly: true
        code:
          type: string
          maxLength: 50
        code_length:
          type: integer
          maximum: 2147483647
          minimum: -2147483648
        description:
          type: string
          maxLength: 200
        account_type:
          allOf:
          - $ref: '#/components/schemas/AccountTypeEnum'
          minimum: -2147483648
          maximum: 2147483647
        active:
          type: boolean
        parent:
          type: integer
          nullable: true
      required:
      - code
      - description
    TimezoneEnum:
      enum:
      - -11
      - -10
      - -9
      - -8
      - -7
      - -6
      - -5
      - -4
      - -3.5
      - -3
      - -2
      - -1
      - 0
      - 1
      - 2
      - 3
      - 3.5
      - 4
      - 4.5
      - 5
      - 5.5
      - 5.75
      - 6
      - 7
      - 8
      - 9
      - 9.5
      - 10
      - 11
      - 12
      type: number
      description: '* `-11.0` - (GMT -11:00) Midway Island, Samoa

        * `-10.0` - (GMT -10:00) Hawaii

        * `-9.0` - (GMT -9:00) Alaska

        * `-8.0` - (GMT -8:00) Pacific Time (US & Canada)

        * `-7.0` - (GMT -7:00) Mountain Time (US & Canada)

        * `-6.0` - (GMT -6:00) Central Time (US & Canada), Mexico City

        * `-5.0` - (GMT -5:00) Eastern Time (US & Canada), Bogota, Lima

        * `-4.0` - (GMT -4:00) Atlantic Time (Canada), Caracas, La Paz

        * `-3.5` - (GMT -3:30) Newfoundland

        * `-3.0` - (GMT -3:00) Brazil, Buenos Aires, Georgetown

        * `-2.0` - (GMT -2:00) Mid-Atlantic

        * `-1.0` - (GMT -1:00) Azores, Cape Verde Islands

        * `0.0` - (GMT) Western Europe Time, London, Lisbon, Casablanca

        * `1.0` - (GMT +1:00) Brussels, Copenhagen, Madrid, Paris

        * `2.0` - (GMT +2:00) Kaliningrad, South Africa

        * `3.0` - (GMT +3:00) Baghdad, Riyadh, Moscow, St. Petersburg

        * `3.5` - (GMT +3:30) Tehran

        * `4.0` - (GMT +4:00) Abu Dhabi, Muscat, Baku, Tbilisi

        * `4.5` - (GMT +4:30) Kabul

        * `5.0` - (GMT +5:00) Ekaterinburg, Islamabad, Karachi, Tashkent

        * `5.5` - (GMT +5:30) Bombay, Calcutta, Madras, New Delhi

        * `5.75` - (GMT +5:45) Kathmandu

        * `6.0` - (GMT +6:00) Almaty, Dhaka, Colombo

        * `7.0` - (GMT +7:00) Bangkok, Hanoi, Jakarta

        * `8.0` - (GMT +8:00) Beijing, Perth, Singapore, Hong Kong

        * `9.0` - (GMT +9:00) Tokyo, Seoul, Osaka, Sapporo, Yakutsk

        * `9.5` - (GMT +9:30) Adelaide, Darwin

        * `10.0` - (GMT +10:00) Eastern Australia, Guam, Vladivostok

        * `11.0` - (GMT +11:00) Magadan, Solomon Islands, New Caledonia

        * `12.0` - (GMT +12:00) Auckland, Wellington, Fiji, Kamchatka'
    PurchaseOrderBillingHistoryItem:
      type: object
      properties:
        id:
          type: integer
        billed_qty:
          type: string
          format: decimal
          pattern: ^-?\d{0,13}(?:\.\d{0,8})?$
          default: '0.00000000'
        received_qty:
          type: string
          format: decimal
          pattern: ^-?\d{0,10}(?:\.\d{0,5})?$
          default: '0.00000'
      required:
      - id
    OrderItemPurchaseEdit:
      type: object
      properties:
        id:
          type: integer
        name:
          type: string
          maxLength: 255
        sku:
          type: string
          maxLength: 100
        unit:
          type: string
          maxLength: 30
        quantity:
          type: string
          format: decimal
          pattern: ^-?\d{0,10}(?:\.\d{0,5})?$
        price:
          type: string
          format: decimal
          pattern: ^-?\d{0,13}(?:\.\d{0,8})?$
        po_note:
          type: string
          title: Comment
        custom_fields:
          type: array
          items:
            type: object
            additionalProperties: {}
        tax_amount:
          type: string
          format: decimal
          pattern: ^-?\d{0,13}(?:\.\d{0,8})?$
          nullable: true
        shipping_amount:
          type: string
          format: decimal
          pattern: ^-?\d{0,13}(?:\.\d{0,8})?$
          nullable: true
        receive_method:
          allOf:
          - $ref: '#/components/schemas/ReceiveMethodEnum'
          minimum: 0
          maximum: 65535
      required:
      - custom_fields
      - id
      - name
      - price
      - quantity
      - unit
    PaymentMethodRead:
      type: object
      properties:
        id:
          type: integer
          readOnly: true
        name:
          type: string
          maxLength: 255
        type:
          allOf:
          - $ref: '#/components/schemas/PaymentMethodTypeEnum'
          title: Payment Method
          minimum: 0
          maximum: 4294967295
        data: {}
        currency:
          $ref: '#/components/schemas/Currency'
        payment_rail:
          type: string
          readOnly: true
        bank_account_country_code:
          type: string
          nullable: true
          readOnly: true
      required:
      - currency
      - data
    PurchaseOrderUpdateSerializerSingle:
      type: object
      properties:
        metadata:
          type: object
          additionalProperties: {}
          default: {}
        data:
          $ref: '#/components/schemas/PurchaseOrderUpdate'
      required:
      - data
    PurchaseOrderContract:
      type: object
      properties:
        id:
          type: integer
        uuid:
          type: string
        name:
          type: string
      required:
      - id
      - uuid
    FlagRead:
      type: object
      properties:
        color:
          type: string
          readOnly: true
        symbol:
          type: string
          readOnly: true
        object_id:
          type: integer
          maximum: 4294967295
          minimum: 0
          format: int64
        content_type:
          type: integer
          nullable: true
      required:
      - object_id
    MinimalRoleRead:
      type: object
      properties:
        name:
          type: string
          maxLength: 150
        type:
          type: integer
      required:
      - name
      - type
    OrderItem

# --- truncated at 32 KB (131 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/procurify/refs/heads/main/openapi/procurify-purchase-orders-api-openapi.yml