Quotes

Import a quote signed on a booking platform

Attaches a PDF signed on a booking platform (Kactus, Privateaser…) to the event as its signed quote. With quote_id, the existing Joinways quote of that event is stamped signed (created: false); without it, an external quote (source: platform) is created from the platform totals (created: true). Both outcomes confirm the event and write the activity, like a paper signature. The decoded PDF is capped at 4 MB. Same fields in both body formats. With an Idempotency-Key, a multipart retry is recognised by its fields and the SHA-256 of the file. Role permission: quotes.manage.

post/events/{id}/quotes/import

Request

  • Base URL: https://joinways.app/api/v1
  • URL: https://joinways.app/api/v1/events/{id}/quotes/import
  • Auth: one of:
    • HTTP bearer
    • OAuth 2 (authorization code, authorization URL https://joinways.app/oauth/authorize, token URL https://joinways.app/api/oauth/token, scopes: mcp.write)

Headers

Idempotency-Keystring

Optional client-generated key (1 to 255 characters, e.g. a UUID v4) that makes the request idempotent for 24 hours: a retry with the same key replays the recorded response (marked Idempotency-Replayed: true) instead of executing the operation again. Same key with another body: 422 idempotency_key_reuse; while the first request runs: 409 idempotency_conflict. See the Idempotency section.

Request body

pdf_base64string byte required

The signed PDF, base64-encoded (a data: prefix is accepted; 4 MB max once decoded).

file_namestring

File name stored with the proof. Defaults to devis-signe.pdf.

quote_idstring uuid

Joinways quote of the event the PDF is the signed copy of. Omitted = an external quote is created.

platformstring

Platform name.

external_referencestring

The platform's own quote number. Importing it twice on the same event is refused (409).

titlestring
currencystring
total_excl_taxnumber

External quote only. One of the two totals is enough; the other is derived from the venue VAT rate.

total_incl_taxnumber

External quote only. Must not be lower than total_excl_tax.

signed_atstring date-time

Defaults to now.

signer_namestring
signer_emailstring email

Example request

{
  "platform": "Kactus",
  "currency": "EUR"
}

Response

Signature recorded.

quote_idstring uuid required

The signed quote (existing or newly created).

createdboolean required

true = an external quote row was created; false = the given quote_id was stamped signed.

event_idstring uuid required
signature_idstring uuid nullable
event_statusstring nullable

Event status after the import (confirmed unless the event was already past that point).

Example response

{
  "event_status": "confirmed"
}

Changes

No recorded changes to this operation across all 1 revision of this API.