#!/usr/bin/env bash set -euo pipefail for required in OUTRESERVE_SUPPLY_BASE_URL OUTRESERVE_SUPPLY_API_KEY OUTRESERVE_PROPERTY_ID OUTRESERVE_UNIT_ID OUTRESERVE_DATE_FROM OUTRESERVE_DATE_TO OUTRESERVE_INCORPORATED_RESERVATION_SEQUENCE; do if [[ -z "${!required:-}" ]]; then echo "Set $required before running this example" >&2 exit 2 fi done if ! command -v jq >/dev/null; then echo 'Install jq to run this cURL example' >&2 exit 2 fi if [[ ! "$OUTRESERVE_INCORPORATED_RESERVATION_SEQUENCE" =~ ^(0|[1-9][0-9]*)$ ]]; then echo 'Set OUTRESERVE_INCORPORATED_RESERVATION_SEQUENCE to a nonnegative integer' >&2 exit 2 fi if (( ${#OUTRESERVE_INCORPORATED_RESERVATION_SEQUENCE} > 16 )) || { (( ${#OUTRESERVE_INCORPORATED_RESERVATION_SEQUENCE} == 16 )) && [[ "$OUTRESERVE_INCORPORATED_RESERVATION_SEQUENCE" > "9007199254740991" ]]; }; then echo 'OUTRESERVE_INCORPORATED_RESERVATION_SEQUENCE exceeds the safe JSON integer limit' >&2 exit 2 fi calendar_url="${OUTRESERVE_SUPPLY_BASE_URL%/}/properties/${OUTRESERVE_PROPERTY_ID}/ari" range_query="date_from=${OUTRESERVE_DATE_FROM}&date_to=${OUTRESERVE_DATE_TO}" calendar_json="$(curl --fail-with-body --silent --show-error \ -H "Authorization: Bearer ${OUTRESERVE_SUPPLY_API_KEY}" \ "${calendar_url}?${range_query}")" revision="$(jq -r '.data.calendar_revision // empty' <<<"$calendar_json")" if [[ -z "$revision" ]]; then echo 'GET ARI did not return data.calendar_revision; inspect the response before writing' >&2 exit 1 fi idempotency_key="$(uuidgen)" body="$(jq -n \ --arg unit_id "$OUTRESERVE_UNIT_ID" \ --arg date_from "$OUTRESERVE_DATE_FROM" \ --arg date_to "$OUTRESERVE_DATE_TO" \ --argjson sequence "$OUTRESERVE_INCORPORATED_RESERVATION_SEQUENCE" \ '{updates:[{scope:"unit",unit_id:$unit_id,date_from:$date_from,date_to:$date_to,available_count:1,incorporated_reservation_sequence:$sequence,rate_minor:18500,stop_sell:false}]}')" curl --fail-with-body --silent --show-error \ -X POST "$calendar_url" \ -H "Authorization: Bearer ${OUTRESERVE_SUPPLY_API_KEY}" \ -H 'Content-Type: application/json' \ -H "If-Match: \"${revision}\"" \ -H "Idempotency-Key: ${idempotency_key}" \ --data "$body" | jq . curl --fail-with-body --silent --show-error \ -H "Authorization: Bearer ${OUTRESERVE_SUPPLY_API_KEY}" \ "${calendar_url}?${range_query}" | jq .