Skip to content
GET/{organizationId}/{mandateId}/booking/events/offers/{offerId}

Get offer

Returns information for a specific offer for a given mandate

Required permissions:

  • mandate.read

  • eventOffer.read

Path Parameters

organizationIdstringrequired
mandateIdstringrequired
offerIdstringrequired

Authentication: X-API-Key

Request

GET/{organizationId}/{mandateId}/booking/events/offers/{offerId}
curl --request GET 'https://cloud.campai.com/api/{organizationId}/{mandateId}/booking/events/offers/{offerId}' \
  --header 'X-API-Key: YOUR_API_KEY'

Responses

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

200Successful response

Content-Type: application/json

ObjectId as string

ObjectId as string

sessionMinutesintegerrequired

maximum: 9007199254740991

exclusiveMinimum: 0

sessionRetriesintegerrequired

minimum: 0

maximum: 9007199254740991

Additional properties are not allowed.

paymentMethodsPendingstringrequired

Options:

unpaidpartialpaid

maxItems: 20

Additional properties are not allowed.

maxItems: 8

refundTextstringrequired

maxLength: 400

Additional properties are not allowed.

Additional properties are not allowed.

namestringrequired

minLength: 1

maxLength: 60

descriptionstringrequired

maxLength: 140

maxItems: 50

Additional properties are not allowed.

attendeeModestringrequired

Options:

multiplesingleteamrate

Additional properties are not allowed.

Additional properties are not allowed.

Response

200
{
  "_id": "000000000000000000000001",
  "mandate": "000000000000000000000001",
  "sessionMinutes": 1,
  "sessionRetries": 0,
  "paymentMethods": {
    "sepaCreditTransfer": {
      "internal": true,
      "cashAccount": "000000000000000000000001",
      "note": "string"
    },
    "sepaDirectDebit": {
      "internal": true,
      "cashAccount": "000000000000000000000001",
      "note": "string"
    },
    "online": {
      "internal": true,
      "note": "string",
      "stripe": true,
      "paypal": false
    },
    "cash": {
      "internal": true,
      "note": "string"
    }
  },
  "paymentMethodsPending": "unpaid",
  "services": [
    {
      "service": "000000000000000000000001",
      "serviceName": "string",
      "serviceDescription": "string",
      "serviceOptions": [
        {
          "id": "string",
          "name": "string",
          "description": "string",
          "price": {
            "isNet": true,
            "price": 0,
            "taxCode": "string",
            "account": 1,
            "costCenter1": 1,
            "costCenter2": 1
          }
        }
      ],
      "serviceMinOptions": 1,
      "serviceMaxOptions": 1,
      "availableAmount": 1
    }
  ],
  "serviceSettings": {
    "required": true,
    "selection": "single"
  },
  "refundPolicies": [
    {
      "refundUntil": {
        "value": 0,
        "unit": "hours"
      },
      "priceModifier": {
        "value": 0,
        "type": "%"
      },
      "pointModifier": {
        "value": 0,
        "type": "%"
      }
    }
  ],
  "refundText": "string",
  "form": {
    "groups": [
      {
        "id": "string",
        "label": "string",
        "fields": [
          {
            "id": "string",
            "type": "placeholder",
            "name": "string"
          }
        ]
      }
    ]
  },
  "formSettings": {
    "addressMode": "none",
    "applicantType": "person",
    "organisationNamePlaceholder": "string",
    "requirePhone": true,
    "showDiscountCode": true,
    "showRefundPolicies": true,
    "membershipNumberLabel": "string"
  },
  "name": "string",
  "description": "string",
  "rates": [
    {
      "id": "string",
      "name": "string",
      "description": "string",
      "availableFrom": {
        "value": 1,
        "unit": "hours"
      },
      "availableTo": {
        "value": 1,
        "unit": "hours"
      },
      "member": {
        "tags": "string",
        "tagsMode": "any",
        "allMandates": false,
        "perTicket": false
      },
      "charge": {
        "type": "price",
        "price": {
          "isNet": true,
          "price": 0,
          "taxCode": "string",
          "account": 1,
          "costCenter1": 1,
          "costCenter2": 1
        },
        "punchCard": {
          "punchCard": "000000000000000000000001",
          "punchCardName": "string",
          "punchCardPrice": {
            "isNet": true,
            "price": 0,
            "taxCode": "string",
            "account": 1,
            "costCenter1": 1,
            "costCenter2": 1
          },
          "points": 1
        }
      },
      "standard": true,
      "availableAmount": 1
    }
  ],
  "availability": {
    "fromType": "anytime",
    "fromDate": "2026-06-15T22:30:00Z",
    "fromRelative": {
      "value": 1,
      "unit": "hours"
    },
    "from": null,
    "toType": "start",
    "toDate": "2026-06-15T22:30:00Z",
    "toRelative": {
      "value": 1,
      "unit": "hours"
    },
    "to": null
  },
  "attendeeMode": "multiple",
  "team": {
    "requiresSize": true,
    "minimumSize": 1,
    "maximumSize": 1,
    "chargeBySize": true,
    "label": "string"
  },
  "permanent": {
    "beforeStart": true,
    "proRata": true
  }
}

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

404Not found

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

404
{
  "code": "NOT_FOUND",
  "message": "Not found",
  "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": []
}