---
/acquisitions/orders:
  get:
    x-mojo-to: Acquisitions::Orders#list
    operationId: listOrders
    tags:
      - orders
    summary: List orders
    produces:
      - application/json
    parameters:
      - name: biblio_id
        in: query
        description: Identifier for a linked bibliographic record
        required: false
        type: integer
      - name: basket_id
        in: query
        description: Identifier for a linked acquisition basket
        required: false
        type: integer
      - name: fund_id
        in: query
        description: Identifier for the fund the order goes against
        required: false
        type: integer
      - name: status
        in: query
        description: Current status for the order. Can be 'new', 'ordered', 'partial',
          'complete' or 'cancelled'
        required: false
        type: string
      - name: only_active
        in: query
        description: If only active orders should be listed
        required: false
        type: boolean
      - $ref: "../swagger.yaml#/parameters/match"
      - $ref: "../swagger.yaml#/parameters/order_by"
      - $ref: "../swagger.yaml#/parameters/page"
      - $ref: "../swagger.yaml#/parameters/per_page"
      - $ref: "../swagger.yaml#/parameters/q_param"
      - $ref: "../swagger.yaml#/parameters/q_body"
      - $ref: "../swagger.yaml#/parameters/request_id_header"
      - name: x-koha-embed
        in: header
        required: false
        description: Embed list sent as a request header
        type: array
        items:
          type: string
          enum:
            - basket
            - basket.basket_group
            - basket.creator
            - biblio
            - biblio.uncancelled_orders+count
            - biblio.holds+count
            - biblio.items+count
            - biblio.suggestions.suggester
            - creator
            - fund
            - fund.budget
            - current_item_level_holds+count
            - invoice
            - items
            - items+strings
            - subscription
        collectionFormat: csv
    responses:
      "200":
        description: A list of orders
        schema:
          type: array
          items:
            $ref: "../swagger.yaml#/definitions/order"
      "400":
        description: |
          Bad request. Possible `error_code` attribute values:

            * `invalid_query`
        schema:
          $ref: "../swagger.yaml#/definitions/error"
      "401":
        description: Authentication required
        schema:
          $ref: "../swagger.yaml#/definitions/error"
      "403":
        description: Access forbidden
        schema:
          $ref: "../swagger.yaml#/definitions/error"
      "404":
        description: Order not found
        schema:
          $ref: "../swagger.yaml#/definitions/error"
      "500":
        description: |
          Internal server error. Possible `error_code` attribute values:

          * `internal_server_error`
        schema:
          $ref: "../swagger.yaml#/definitions/error"
      "503":
        description: Under maintenance
        schema:
          $ref: "../swagger.yaml#/definitions/error"
    x-koha-authorization:
      permissions:
        acquisition:
          - order_manage
          - order_manage_all
          - order_receive
  post:
    x-mojo-to: Acquisitions::Orders#add
    operationId: addOrder
    tags:
      - orders
    summary: Add order
    parameters:
      - name: body
        in: body
        description: A JSON object representing an order
        required: true
        schema:
          $ref: "../swagger.yaml#/definitions/order"
    produces:
      - application/json
    responses:
      "201":
        description: Order added
        schema:
          $ref: "../swagger.yaml#/definitions/order"
      "400":
        description: Bad request
        schema:
          $ref: "../swagger.yaml#/definitions/error"
      "401":
        description: Authentication required
        schema:
          $ref: "../swagger.yaml#/definitions/error"
      "403":
        description: Access forbidden
        schema:
          $ref: "../swagger.yaml#/definitions/error"
      "409":
        description: Conflict in creating the resource
        schema:
          $ref: "../swagger.yaml#/definitions/error"
      "500":
        description: |
          Internal server error. Possible `error_code` attribute values:

          * `internal_server_error`
        schema:
          $ref: "../swagger.yaml#/definitions/error"
      "503":
        description: Under maintenance
        schema:
          $ref: "../swagger.yaml#/definitions/error"
    x-koha-authorization:
      permissions:
        acquisition: order_manage
"/acquisitions/orders/{order_id}":
  get:
    x-mojo-to: Acquisitions::Orders#get
    operationId: getOrder
    tags:
      - orders
    summary: Get order
    parameters:
      - $ref: "../swagger.yaml#/parameters/order_id_pp"
      - name: x-koha-embed
        in: header
        required: false
        description: Embed list sent as a request header
        type: array
        items:
          type: string
          enum:
            - basket
            - basket.basket_group
            - basket.creator
            - biblio
            - biblio.uncancelled_orders+count
            - biblio.holds+count
            - biblio.items+count
            - biblio.suggestions.suggester
            - fund
            - current_item_level_holds+count
            - invoice
            - items
            - subscription
        collectionFormat: csv
    produces:
      - application/json
    responses:
      "200":
        description: An order
        schema:
          $ref: "../swagger.yaml#/definitions/order"
      "400":
        description: Bad request
        schema:
          $ref: "../swagger.yaml#/definitions/error"
      "401":
        description: Authentication required
        schema:
          $ref: "../swagger.yaml#/definitions/error"
      "403":
        description: Access forbidden
        schema:
          $ref: "../swagger.yaml#/definitions/error"
      "404":
        description: Order not found
        schema:
          $ref: "../swagger.yaml#/definitions/error"
      "500":
        description: |
          Internal server error. Possible `error_code` attribute values:

          * `internal_server_error`
        schema:
          $ref: "../swagger.yaml#/definitions/error"
      "503":
        description: Under maintenance
        schema:
          $ref: "../swagger.yaml#/definitions/error"
    x-koha-authorization:
      permissions:
        acquisition: order_manage
  put:
    x-mojo-to: Acquisitions::Orders#update
    operationId: updateOrder
    tags:
      - orders
    summary: Update order
    parameters:
      - $ref: "../swagger.yaml#/parameters/order_id_pp"
      - name: body
        in: body
        description: A JSON object representing an order
        required: true
        schema:
          $ref: "../swagger.yaml#/definitions/order"
    produces:
      - application/json
    responses:
      "200":
        description: An order
        schema:
          $ref: "../swagger.yaml#/definitions/order"
      "400":
        description: Bad request
        schema:
          $ref: "../swagger.yaml#/definitions/error"
      "401":
        description: Authentication required
        schema:
          $ref: "../swagger.yaml#/definitions/error"
      "403":
        description: Access forbidden
        schema:
          $ref: "../swagger.yaml#/definitions/error"
      "404":
        description: Order not found
        schema:
          $ref: "../swagger.yaml#/definitions/error"
      "500":
        description: |
          Internal server error. Possible `error_code` attribute values:

          * `internal_server_error`
        schema:
          $ref: "../swagger.yaml#/definitions/error"
      "503":
        description: Under maintenance
        schema:
          $ref: "../swagger.yaml#/definitions/error"
    x-koha-authorization:
      permissions:
        acquisition: order_manage
  delete:
    x-mojo-to: Acquisitions::Orders#delete
    operationId: deleteOrder
    tags:
      - orders
    summary: Delete order
    parameters:
      - $ref: "../swagger.yaml#/parameters/order_id_pp"
    produces:
      - application/json
    responses:
      "204":
        description: Order deleted
      "400":
        description: Bad request
        schema:
          $ref: "../swagger.yaml#/definitions/error"
      "401":
        description: Authentication required
        schema:
          $ref: "../swagger.yaml#/definitions/error"
      "403":
        description: Access forbidden
        schema:
          $ref: "../swagger.yaml#/definitions/error"
      "404":
        description: Order not found
        schema:
          $ref: "../swagger.yaml#/definitions/error"
      "409":
        description: Conflict
        schema:
          $ref: "../swagger.yaml#/definitions/error"
      "500":
        description: |
          Internal server error. Possible `error_code` attribute values:

          * `internal_server_error`
        schema:
          $ref: "../swagger.yaml#/definitions/error"
      "503":
        description: Under maintenance
        schema:
          $ref: "../swagger.yaml#/definitions/error"
    x-koha-authorization:
      permissions:
        acquisition: order_manage
