openapi: 3.0.0 info: title: Ordoro API Documentation Address Purchase Order API description: "# Introduction\n\nThe Ordoro API can be used to access data or integrate to add functionality to Ordoro. The Ordoro API uses the application/json Content-Type. The Ordoro API documentation is in beta. [See our forum](https://forums.ordoro.com) for questions or comments to help us improve the docs or request features.\n#### Note: Any routes with a /v3 designation will not allow for trailing slashes while all other routes and endpoints will require a trailing slash.\n\n# Authentication\n\nThe Ordoro API uses [Basic HTTP Authentication](http://en.wikipedia.org/wiki/Basic_access_authentication). Please create API keys via Settings->Account Settings->API Keys in app and use those for basic auth in your API requests.\n\n# Additional Resources\n\nFor a look at some code examples on how to use the API check out our github repo https://github.com/ordoro/api-examples.\n\n# API Responses\n\nMost of our endpoints return either a list of objects or a single object instance. They share similar response shapes.\n\n## List endpoints\n\nList endpoints respond with the following parameters:\n\n| Name | Type | Description |\n|----------------|--------------------------|-------------|\n| `count` | int | The total number of objects returned by a query ( **not** necessarily the number of objects included in a response). |\n| `limit` | int | The maximum number of objects returned per request. Defaults to 10. Maximum is 100. You can set this as a URL parameter. |\n| `offset` | int | The number of objects being offset in the response. May be altered as a URL Parameter. |\n| `` | array | An array of objects. The name of the model should be singular. For example, the /v3/order endpoint will have an `order` parameter, as opposed to `orders`.|\n\nHere is an example response for the `/v3/order` list endpoint.\n\n```\n{\n \"count\": 2,\n \"limit\": 10,\n \"offset\" 0,\n \"order\": [\n {\n // an order object\n },\n {\n // another order object\n }\n ]\n}\n```\n\n## Instance endpoints\n\nInstance endpoints return a single instance of a serialized model. `/v3/order/{order_number}` is an example of an instance endpoint.\n\n# Error Handling\n\nError responses contain the following parameters:\n\n| Name | Type | Description |\n|-----------------|------------------|----------------------------------------------------------------------|\n| `error_message` | string | Some human-readable error message. |\n| `param` | string or `null` | The name of the corresponding parameter, or null for general errors. |\n\n# Rate Limiting\n\nAPI requests will be limited to 500 requests per minute. Any requests over this threshold will respond with a 429 status code." contact: {} version: '1.0' servers: - url: https://api.ordoro.com/ variables: {} tags: - name: Purchase Order description: '' paths: /product/{sku}/buy/{supplier_id}/: post: tags: - Purchase Order summary: Create a Purchase Order by SKU and Supplier ID description: Order More of a product. This will create or update an existing Purchase Order operationId: ProductBuyBySkuAndSupplierId_POST requestBody: content: application/json: schema: $ref: '#/components/schemas/post_buy_more' parameters: - $ref: '#/components/parameters/skuPath' - $ref: '#/components/parameters/supplierPath' responses: '200': description: '' headers: {} content: application/json: schema: $ref: '#/components/schemas/purchase_order' '201': description: '' headers: {} content: application/json: schema: $ref: '#/components/schemas/purchase_order' deprecated: false /purchase_order/: get: tags: - Purchase Order summary: List Purchase Orders description: '' operationId: PurchaseOrder_GET parameters: - $ref: '#/components/parameters/offsetParam' - $ref: '#/components/parameters/limitParam' - $ref: '#/components/parameters/searchParam' - name: sort in: query description: '' style: form explode: true schema: $ref: '#/components/schemas/PurchaseOrderSort' - name: status in: query description: '' style: form explode: true schema: $ref: '#/components/schemas/PurchaseOrderStatus' - name: sku in: query description: '' style: form explode: true schema: type: array items: type: string - name: start_date in: query description: '' style: form explode: true schema: type: string - name: end_date in: query description: '' style: form explode: true schema: type: string - name: tag in: query description: 'Filter by tag name. Can be repeated for multiple tags. Note: Cannot be included if `untagged` is also passed. ' style: form schema: type: array items: type: string - name: tag_filter_by in: query description: 'Tag filtering logic: * `or` [default] return purchase orders that contain any of the supplied tags * `and` returns purchase orders containing ALL of the supplied tags * `only` returns purchase orders containing ONLY the supplied tags ' style: form explode: true schema: type: string - name: exclude_tags description: 'Note: Cannot be included if `untagged` is also passed. ' type: array schema: type: array items: type: string in: query required: false - name: untagged in: query description: 'Filter untagged purchase orders Note: Cannot be included if `tags` or `exclude_tags` are also passed. ' style: form explode: true schema: type: boolean - name: updated_after in: query description: '' style: form explode: true schema: type: string - name: updated_before in: query description: '' style: form explode: true schema: type: string responses: '200': description: '' headers: {} content: application/json: schema: $ref: '#/components/schemas/purchase_order_list' deprecated: false post: tags: - Purchase Order summary: Create a Purchase Order description: '' operationId: PurchaseOrder_POST parameters: [] requestBody: content: application/json: schema: $ref: '#/components/schemas/post_purchase_order' responses: '201': description: '' headers: {} content: application/json: schema: $ref: '#/components/schemas/purchase_order' deprecated: false /purchase_order/counts/: get: tags: - Purchase Order summary: Get Purchase Order Counts description: '' operationId: PurchaseOrderCounts_GET parameters: [] responses: '200': description: '' headers: {} content: application/json: schema: $ref: '#/components/schemas/purchase_order_counts' deprecated: false /purchase_order/{po_id}/: delete: tags: - Purchase Order summary: Delete a Purchase Order by ID description: Cancel a purchase order. operationId: PurchaseOrderByPoId_DELETE parameters: - $ref: '#/components/parameters/poidPath' responses: '200': description: '' headers: {} content: application/json: schema: $ref: '#/components/schemas/purchase_order' deprecated: false get: tags: - Purchase Order summary: Get a Purchase Order by ID description: '' operationId: PurchaseOrderByPoId_GET parameters: - $ref: '#/components/parameters/poidPath' - $ref: '#/components/parameters/offsetParam' - $ref: '#/components/parameters/limitParam' - $ref: '#/components/parameters/searchParam' - name: sort in: query description: '' style: form explode: true schema: $ref: '#/components/schemas/PurchaseOrderSort' - name: status in: query description: '' style: form explode: true schema: $ref: '#/components/schemas/PurchaseOrderStatus' - name: sku in: query description: '' style: form explode: true schema: type: array items: type: string - name: start_date in: query description: '' style: form explode: true schema: type: string - name: end_date in: query description: '' style: form explode: true schema: type: string responses: '200': description: '' headers: {} content: application/json: schema: $ref: '#/components/schemas/purchase_order' deprecated: false put: tags: - Purchase Order summary: Update a Purchase Order by ID description: '' operationId: PurchaseOrderByPoId_PUT parameters: - $ref: '#/components/parameters/poidPath' responses: '200': description: '' headers: {} content: application/json: schema: $ref: '#/components/schemas/purchase_order' requestBody: content: application/json: schema: $ref: '#/components/schemas/put_purchase_order' deprecated: false /purchase_order/{po_id}/comment/: post: tags: - Purchase Order summary: Create a Purchase Order Comment by PO ID description: '' operationId: PurchaseOrderCommentByPoId_POST parameters: - $ref: '#/components/parameters/poidPath' responses: '200': description: '' headers: {} content: application/json: schema: $ref: '#/components/schemas/comment' requestBody: content: application/json: schema: $ref: '#/components/schemas/post_comment' deprecated: false get: summary: Retrieve Comments operationId: PurchaseOrderCommentByPoId_GET description: '' tags: - Purchase Order parameters: - $ref: '#/components/parameters/poidPath' responses: '200': description: OK content: application/json: example: limit: 10 offset: 0 count: 1 comment: - user: user@ordoro.com date: '2026-03-05T21:10:26.911724+00:00' text: This is a very important comment schema: $ref: '#/components/schemas/comment' /purchase_order/{po_id}/create_goods_receipt/: post: tags: - Purchase Order summary: Create a Purchase Order Goods Receipt by PO ID description: '' operationId: PurchaseOrderCreateGoodsReceiptByPoId_POST parameters: - $ref: '#/components/parameters/poidPath' responses: '201': description: '' headers: {} content: application/json: schema: $ref: '#/components/schemas/purchase_order' requestBody: content: application/json: schema: $ref: '#/components/schemas/post_purchase_order_goods_receipt' deprecated: false /purchase_order/{po_id}/line/: post: tags: - Purchase Order summary: Create a Purchase Order Line by PO ID description: '' operationId: PurchaseOrderLineByPoId_POST parameters: - $ref: '#/components/parameters/poidPath' responses: '200': description: '' headers: {} content: application/json: schema: $ref: '#/components/schemas/purchase_order' requestBody: content: application/json: schema: $ref: '#/components/schemas/post_purchase_order_item' deprecated: false /purchase_order/{po_id}/line/{po_item_id}/: delete: tags: - Purchase Order summary: Delete a Purchase Order Line by PO ID and PO Line ID description: '' operationId: PurchaseOrderLineByPoIdAndPoItemId_DELETE parameters: - $ref: '#/components/parameters/poidPath' - name: po_item_id in: path description: '' required: true style: simple schema: type: string responses: '200': description: '' headers: {} content: application/json: schema: $ref: '#/components/schemas/purchase_order' deprecated: false put: tags: - Purchase Order summary: Update a Purchase Order Line by PO ID and PO Line ID description: '' operationId: PurchaseOrderLineByPoIdAndPoItemId_PUT parameters: - $ref: '#/components/parameters/poidPath' - name: po_item_id in: path description: '' required: true style: simple schema: type: string responses: '200': description: '' headers: {} content: application/json: schema: $ref: '#/components/schemas/purchase_order' requestBody: content: application/json: schema: $ref: '#/components/schemas/put_purchase_order_item' deprecated: false /purchase_order/{po_id}/send/: get: tags: - Purchase Order summary: Preview a Purchase Order description: '' operationId: PurchaseOrderSendByPoId_GET parameters: - $ref: '#/components/parameters/poidPath' responses: '200': description: '' headers: {} deprecated: false post: tags: - Purchase Order summary: Send a Purchase Order to the Supplier description: '' operationId: PurchaseOrderSendByPoId_POST parameters: - $ref: '#/components/parameters/poidPath' responses: '200': description: '' headers: {} content: application/json: schema: $ref: '#/components/schemas/purchase_order' deprecated: false /purchase_order/tag/: post: tags: - Purchase Order summary: Create a Purchase Order Tag description: '' operationId: PurchaseOrderTags_POST parameters: [] requestBody: content: application/json: schema: $ref: '#/components/schemas/post_v3_tag' responses: '201': description: '' headers: {} content: application/json: schema: $ref: '#/components/schemas/v3_tag' get: tags: - Purchase Order summary: Get Purchase Order Tags description: '' operationId: PurchaseOrderTags_GET parameters: [] responses: '200': description: '' headers: {} content: application/json: schema: $ref: '#/components/schemas/v3_tag_list' deprecated: false /purchase_order/tag/{name}/: get: tags: - Purchase Order summary: Get Purchase Order Tag by Name description: '' operationId: PurchaseOrderTag_GET parameters: [] responses: '200': description: '' headers: {} content: application/json: schema: $ref: '#/components/schemas/v3_tag' deprecated: false put: tags: - Purchase Order summary: Update a Purchase Order Tag by Name description: '' operationId: PurchaseOrderTags_PUT parameters: [] requestBody: content: application/json: schema: $ref: '#/components/schemas/put_v3_tag' responses: '200': description: '' headers: {} content: application/json: schema: $ref: '#/components/schemas/v3_tag' delete: tags: - Purchase Order summary: Delete a Purchase Order Tag by Name description: '' operationId: PurchaseOrderTags_DELETE parameters: [] responses: '200': description: response OK /purchase_order/{po_id}/tag/{tag_name}/: post: tags: - Purchase Order summary: Apply a Purchase Order Tag to Purchase Order description: '' operationId: PurchaseOrderTagPO_POST parameters: [] responses: '200': description: '' headers: {} content: application/json: schema: $ref: '#/components/schemas/purchase_order' delete: tags: - Purchase Order summary: Remove a Purchase Order Tag from a Purchase Order description: '' operationId: PurchaseOrderTagPO_DELETE parameters: [] responses: '200': description: '' headers: {} content: application/json: schema: $ref: '#/components/schemas/purchase_order' components: schemas: put_purchase_order_item: title: Update a Purchase Order Item type: object additionalProperties: false properties: quantity: type: integer unit_price: type: number discount_amount: type: number supplier_shipping_method_map: title: Supplier shipping method map type: object additionalProperties: false properties: active: description: Toggle to enable use of this shipping method map type: boolean created: description: The date this was created type: string id: description: internal reference identifier for the supplier shipping method map type: integer requested_shipping_method: default: '' description: User defined requested shipping method on an Order to be mapped to a determinate shipping method anyOf: - type: string - type: 'null' mapped_shipping_method: description: 'FBA defined shipping methods will only be one of the following: [''Expedited'', ''Priority'', ''Standard'']. All others can be freeform to suit the supplier' type: string mapped_shipping_account: anyOf: - type: string - type: 'null' mapped_shipping_carrier: anyOf: - type: string - type: 'null' supplier_id: description: Integer indicating the supplier for which this mapping is tied. type: integer updated: description: The latest updated date type: string required: - active - created - id - requested_shipping_method - mapped_shipping_method - mapped_shipping_account - mapped_shipping_carrier - supplier_id - updated v3_tag: title: V3 Tag Schema type: object properties: id: type: integer name: type: string color: type: string required: - id - name - color goods_receipt: title: Goods Receipt Schema type: object additionalProperties: false properties: status: type: string po_id: type: string po_status: type: string goods_receipt_id: type: string created: type: string format: date-time updated: type: string format: date-time received: type: string format: date-time _link: type: string items: type: array items: type: object properties: id: type: integer po_item_id: type: string quantity: type: integer _link: type: string product: $ref: '#/components/schemas/product_base' comments: type: array items: $ref: '#/components/schemas/comment' purchase_order_list: title: Purchase Order List Response schema type: object properties: limit: type: integer example: 1 offset: type: integer example: 0 count: type: integer example: 46 purchase_order: type: array items: $ref: '#/components/schemas/purchase_order' post_purchase_order: title: Buy More Products Request Schema type: object additionalProperties: false properties: supplier_id: type: integer warehouse_id: type: integer po_id: type: string shipping_method: type: string payment_method: type: string instructions: type: string estimated_delivery_date: type: string shipping_amount: type: number tax_amount: type: number discount_amount: type: number items: type: array items: type: object $ref: '#/components/schemas/purchase_order_item' required: - supplier_id address: title: Address Schema type: object additionalProperties: false properties: id: type: integer name: example: Jimmy McGill anyOf: - type: string - type: 'null' company: example: Hamlin, Hamlin & McGill anyOf: - type: string - type: 'null' street1: example: 100 Constitution Ave anyOf: - type: string - type: 'null' street2: anyOf: - type: string - type: 'null' city: example: Albuquerque anyOf: - type: string - type: 'null' state: example: NM anyOf: - type: string - type: 'null' zip: example: '87109' anyOf: - type: string - type: 'null' country: example: US anyOf: - type: string - type: 'null' email: example: slippin-jimmy@saul-good.man anyOf: - type: string - type: 'null' phone: example: 555-867-5309 anyOf: - type: string - type: 'null' fax: anyOf: - type: string - type: 'null' cart_address_id: anyOf: - type: string - type: 'null' revision_locked_fields: type: array validation: title: Validation status of an Address properties: status: type: string enum: - unvalidated - validated - warning - error suggested: type: array items: title: Suggested Address type: object additionalProperties: false properties: is_commercial: default: false anyOf: - type: boolean - type: 'null' street1: type: string street2: anyOf: - type: string - type: 'null' city: type: string state: type: string zip: type: string country_code: anyOf: - type: string - type: 'null' required: - city - state - zip - street1 additional_text: anyOf: - type: string - type: 'null' required: - status - additional_text - suggested additionalProperties: false anyOf: - type: object - type: 'null' required: - name - company - street1 - street2 - city - state - zip - country - email - phone post_purchase_order_item: title: Create a Purchase Order Item type: object additionalProperties: false properties: sku: type: string quantity: type: integer unit_price: type: number discount_amount: type: number required: - sku v3_tag_list: title: Tag List Schema type: object properties: count: type: integer tag: type: array items: $ref: '#/components/schemas/v3_tag' limit: type: integer default: 10 offset: type: integer default: 0 required: - count - tag - limit - offset post_purchase_order_goods_receipt: title: Create Purchase Order Goods Receipt additionalProperties: false type: object properties: goods_receipt_id: type: string PurchaseOrderStatus: title: purchase_order_status enum: - unsent - sent - partial - received - cancelled - all type: string warehouse: title: Warehouse Schema additionalProperties: false type: object properties: _link: type: string id: type: integer address: $ref: '#/components/schemas/address' cart: anyOf: - type: string - type: 'null' is_configured_for_shipping: type: boolean is_default_location: type: boolean required: - id - address - cart - is_configured_for_shipping - is_default_location purchase_order_item: title: Purchase Order Item Schema type: object additionalProperties: false properties: sku: type: string quantity: type: integer unit_price: type: number discount_amount: type: number required: - sku - quantity post_v3_tag: title: Create a Tag type: object additionalProperties: false properties: name: type: string color: type: string required: - name - color post_buy_more: title: Buy More Products Request Schema type: object additionalProperties: false properties: warehouse: type: integer quantity: type: integer unit_price: type: number discount_amount: type: number po_id: type: string required: - warehouse - quantity put_v3_tag: title: Update a Tag type: object additionalProperties: false properties: name: type: string color: type: string purchase_order_counts: title: Purchase Order Counts Response Schema additionalProperties: false type: object properties: all: type: integer unsent: type: integer sent: type: integer partial: type: integer received: type: integer cancelled: type: integer required: - all - unsent - sent - partial - received - cancelled comment: title: Comment Schema type: object additionalProperties: false properties: user: type: string date: type: string format: date-time text: type: string product_base: title: Product Schema type: object additionalProperties: false properties: type: type: string example: Tangible cost: type: number example: 4.95 id: type: integer example: 19551105 company_id: type: integer example: 1985 name: type: string example: Flux Capacitor sku: type: string example: outa-time taxable: type: string weight: type: number example: 1.21 length: type: integer example: 12 width: type: integer example: 4 height: type: integer example: 8 price: type: number example: 19.55 customer_text: anyOf: - type: string - type: 'null' internal_notes: example: Be sure to include the complimentary almanac anyOf: - type: string - type: 'null' total_on_hand: type: number category: type: string example: misc-timetravel is_kit_parent: type: boolean example: false archive_date: format: date-time anyOf: - type: string - type: 'null' hs_code: anyOf: - type: string - type: 'null' country_of_origin: example: US anyOf: - type: string - type: 'null' customs_description: anyOf: - type: string - type: 'null' created: type: string format: date-time example: '2015-10-26T15:44:17.993588-06:00' updated: type: string format: date-time example: '2020-01-01T17:54:05.158248-06:00' upc: example: '847509005811' anyOf: - type: string - type: 'null' asin: example: B07WXJHZ1L anyOf: - type: string - type: 'null' image_url: anyOf: - type: string - type: 'null' default_image_id: anyOf: - type: string - type: 'null' _link: anyOf: - type: string - type: 'null' tags: type: array items: $ref: '#/components/schemas/v3_tag' total_committed: type: number total_available: type: number total_allocated: type: number total_unallocated: type: number po_total_committed: type: number fulfillment_type: enum: - in_house - dropshippable - automatically_dropshipped anyOf: - type: string - type: 'null' post_comment: title: Create a Comment Schema type: object additionalProperties: false properties: comment: type: string required: - comment PurchaseOrderSort: title: purchase_order_sort enum: - status - -status - po_id - -po_id - updated - -updated - supplier - -supplier - ship_to - -ship_to - estimated_delivery_date - -estimated_delivery_date type: string put_purchase_order: title: Update a Purchase Order type: object additionalProperties: false properties: warehouse: type: string supplier: type: string po_id: type: string shipping_method: type: string instructions: type: string sent: type: string format: date-time estimated_delivery_date: type: string format: date-time payment_method: type: string discount_amount: type: number shipping_amount: type: number tax_amount: type: number supplier: additionalProperties: false properties: _link: type: string address: $ref: '#/components/schemas/address' archive_date: format: date-time anyOf: - type: string - type: 'null' automatically_show_ship_to_email: type: boolean automatically_show_supplier_price: type: boolean company_id: type: integer created: format: date-time type: string default_shipping_account: type: string default_shipping_carrier: type: string default_shipping_method: type: string dropship_prefer_cart_order_line_names: type: integer dropshipment_routing_address: type: string dropshipment_routing_channel: type: string id: type: integer po_routing_address: type: string po_routing_channel: type: string shipping_method_maps: items: $ref: '#/components/schemas/supplier_shipping_method_map' type: array updated: format: date-time type: string vendor_config: type: object warehouse_id: anyOf: - type: integer - type: 'null' required: - id - company_id - warehouse_id - created - updated - archive_date - automatically_show_supplier_price - dropship_prefer_cart_order_line_names - address - vendor_config title: Supplier Schema type: object purchase_order: title: Purchase Order Schema type: object additionalProperties: false properties: status: type: string company_id: type: integer po_id: type: string shipping_method: type: string payment_method: type: string instructions: type: string sent: format: date-time anyOf: - type: string - type: 'null' estimated_delivery_date: type: string format: date-time created: type: string format: date-time updated: type: string format: date-time shipping_amount: type: number tax_amount: type: number discount_amount: type: number _link: type: string items: type: array items: type: object properties: id: type: integer quantity: type: integer unit_price: type: number discount_amount: type: number _link: type: string product: allOf: - $ref: '#/components/schemas/product_base' - properties: supplier: type: object additionalProperties: false properties: sku: type: string price: type: number unit_price: type: number warehouse: type: object additionalProperties: false properties: location_in_warehouse: type: string to_be_shipped: type: number available_on_hand: type: number quantity_received: type: integer supplier: type: object $ref: '#/components/schemas/supplier' warehouse: type: object $ref: '#/components/schemas/warehouse' comments: type: array items: $ref: '#/components/schemas/comment' goods_receipts: type: array items: $ref: '#/components/schemas/goods_receipt' tags: type: array items: $ref: '#/components/schemas/v3_tag' parameters: searchParam: name: search in: query description: '' schema: type: string supplierPath: name: supplier_id in: path description: '' required: true style: simple schema: type: string skuPath: name: sku in: path description: '' required: true style: simple schema: type: string limitParam: in: query name: limit required: false schema: type: integer minimum: 1 maximum: 100 default: 10 poidPath: name: po_id in: path description: '' required: true style: simple schema: type: string offsetParam: in: query name: offset required: false description: '' schema: type: integer default: 0 minimum: 0