Skip to content
POST/{organizationId}/{mandateId}/booking/resources/offers/{offerId}

Update offer

Updates a specific offer for a given mandate

Required permissions:

  • mandate.read

  • resourceOffer.edit

Path Parameters

organizationIdstringrequired
mandateIdstringrequired
offerIdstringrequired

Request Body required

Content-Type: application/json

sessionMinutesintegerrequired

maximum: 9007199254740991

exclusiveMinimum: 0

sessionRetriesintegerrequired

minimum: 0

maximum: 9007199254740991

Default: null

paymentMethodsPendingstringrequired

Options:

unpaidpartialpaid
disallowCancelationbooleanrequired

maxItems: 8

refundTextstringrequired

maxLength: 400

availableOnWatchlistbooleanrequired
attachReceiptbooleanrequired

Authentication: X-API-Key

Request

POST/{organizationId}/{mandateId}/booking/resources/offers/{offerId}
curl --request POST 'https://cloud.campai.com/api/{organizationId}/{mandateId}/booking/resources/offers/{offerId}' \
  --header 'X-API-Key: YOUR_API_KEY' \
  --header 'Content-Type: application/json' \
  --data '{
  "sessionMinutes": 1,
  "sessionRetries": 0,
  "paymentMethods": {
    "sepaCreditTransfer": {
      "internal": true,
      "cashAccount": "000000000000000000000001",
      "note": "string"
    },
    "sepaDirectDebit": {
      "internal": true,
      "cashAccount": "000000000000000000000001",
      "note": "string"
    },
    "online": {
      "internal": true,
      "note": "string"
    },
    "cash": {
      "internal": true,
      "note": "string"
    }
  },
  "paymentMethodsPending": "unpaid",
  "disallowCancelation": true,
  "refundPolicies": [
    {
      "refundUntil": {
        "value": 0,
        "unit": "hours"
      },
      "priceModifier": {
        "value": 0,
        "type": "%"
      },
      "pointModifier": {
        "value": 0,
        "type": "%"
      }
    }
  ],
  "refundText": "string",
  "formSettings": {
    "addressMode": "none",
    "applicantType": "person",
    "organisationNamePlaceholder": "string",
    "requirePhone": true,
    "showDiscountCode": true,
    "showRefundPolicies": true,
    "membershipNumberLabel": "string"
  },
  "availability": {
    "toRelative": {
      "value": 1,
      "unit": "hours"
    }
  },
  "availabilityHours": {
    "from": {
      "hours": 0,
      "minutes": 0
    },
    "to": {
      "hours": 0,
      "minutes": 0
    }
  },
  "availabilityWeekdays": {},
  "availableOnWatchlist": true,
  "slots": {
    "size": 1,
    "unit": "minutes",
    "minimum": 1,
    "maximum": 1,
    "chargeRateBySlotNumber": true
  },
  "quantity": {
    "fromStock": true,
    "chargeRateByQuantity": true,
    "chargeServicesByQuantity": true,
    "minimum": 1,
    "maximum": 1,
    "name": "string",
    "description": "string"
  },
  "block": {
    "maximum": 1,
    "endMonth": 1,
    "endDate": 1,
    "internal": true
  },
  "attachReceipt": true
}'

Responses

This endpoint returns different response codes based on the request outcome.

200Successful response

Content-Type: application/json

Valueany

Response

200
"string"

400Invalid input data

Content-Type: application/json

The error information

messagestringrequired

The error message

codestringrequired

The error code

An array of issues that were responsible for the error

Response

400
{
  "code": "BAD_REQUEST",
  "message": "Invalid input data",
  "issues": []
}

401Authorization not provided

Content-Type: application/json

The error information

messagestringrequired

The error message

codestringrequired

The error code

An array of issues that were responsible for the error

Response

401
{
  "code": "UNAUTHORIZED",
  "message": "Authorization not provided",
  "issues": []
}

403Insufficient access

Content-Type: application/json

The error information

messagestringrequired

The error message

codestringrequired

The error code

An array of issues that were responsible for the error

Response

403
{
  "code": "FORBIDDEN",
  "message": "Insufficient access",
  "issues": []
}

500Internal server error

Content-Type: application/json

The error information

messagestringrequired

The error message

codestringrequired

The error code

An array of issues that were responsible for the error

Response

500
{
  "code": "INTERNAL_SERVER_ERROR",
  "message": "Internal server error",
  "issues": []
}