Skip to content
POST/{organizationId}/{mandateId}/booking/events/{eventId}

Update event

Updates a specific event for a given mandate

Required permissions:

  • mandate.read

  • event.edit

Path Parameters

organizationIdstringrequired
mandateIdstringrequired
eventIdstringrequired

Request Body required

Content-Type: application/json

applyToFutureEventsbooleanoptional

Default: false

notifyAttendeesbooleanoptional

Default: true

preserveDeletedEventsbooleanoptional

Default: false

Authentication: X-API-Key

Request

POST/{organizationId}/{mandateId}/booking/events/{eventId}
curl --request POST 'https://cloud.campai.com/api/{organizationId}/{mandateId}/booking/events/{eventId}' \
  --header 'X-API-Key: YOUR_API_KEY' \
  --header 'Content-Type: application/json' \
  --data '{
  "info": {
    "title": "string",
    "description": "string",
    "details": "string",
    "color": "",
    "tags": [
      "string"
    ],
    "categories": [
      {
        "name": "string",
        "nameNormalized": "string",
        "bookingCategoryId": "000000000000000000000001"
      }
    ],
    "place": {
      "type": "resource"
    }
  },
  "settings": {
    "acceptCancelMode": "optIn",
    "selfCheckInBeforeMinutes": 0,
    "checkIn": {
      "qrCode": true
    },
    "maxAttendees": 1,
    "minAttendees": {
      "count": 1,
      "deadlineRelative": {
        "value": 1,
        "unit": "hours"
      }
    },
    "waitlist": {
      "mode": "ordered",
      "offerAvailableHours": 1
    },
    "permanent": true,
    "notifyFirstHours": 1,
    "notifySecondHours": 1,
    "notifyThirdHours": 1,
    "confirmationMailText": "string",
    "waitlistMailText": "string"
  },
  "offer": {
    "sessionMinutes": 1,
    "sessionRetries": 0,
    "availability": {
      "fromType": "anytime",
      "fromDate": "2026-06-15T22:30:00Z",
      "fromRelative": {
        "value": 1,
        "unit": "hours"
      },
      "toType": "start",
      "toDate": "2026-06-15T22:30:00Z",
      "toRelative": {
        "value": 1,
        "unit": "hours"
      }
    },
    "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",
    "attendeeMode": "multiple",
    "formSettings": {
      "addressMode": "none",
      "applicantType": "person",
      "organisationNamePlaceholder": "string",
      "requirePhone": true,
      "showDiscountCode": true,
      "showRefundPolicies": true,
      "membershipNumberLabel": "string"
    },
    "displaySettings": {
      "seatsAvailableThreshold": 0
    },
    "team": {
      "requiresSize": true,
      "minimumSize": 1,
      "maximumSize": 1,
      "chargeBySize": true,
      "label": "string"
    },
    "attachReceipt": true,
    "bookingRestriction": "soldOut",
    "permanent": {
      "beforeStart": true,
      "proRata": true
    }
  }
}'

Responses

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

200Successful response

Content-Type: application/json

blockedintegerrequired

minimum: 0

maximum: 9007199254740991

Response

200
{
  "inserted": [
    "000000000000000000000001"
  ],
  "updated": [
    "000000000000000000000001"
  ],
  "deleted": [
    "000000000000000000000001"
  ],
  "blocked": 0
}

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": []
}