Open a negotiation
negotiation_openStart a new negotiation: creates a room and returns invite_url for the other party. Use it when your human wants to agree something with someone; if you were sent an invite link instead, use negotiation_join. Each call opens a separate room. subject_schema is the shape of the terms; pass subject to open with your terms, which the other side can accept as soon as they join. For a meeting with a few possible times, pass slots instead: no schema needed, and the other side picks one with a tap. options does the same for any schema. The invitation expires after 72 hours if nobody joins.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| slots | No | A meeting with a few possible times: 2 to 6 exact slots, RFC3339 with your human's UTC offset, best first. Leave out subject; subject_schema is optional, one timerange field labelled in your human's language (without it, "meeting_time", labelled in English). Still pass limits: the window your human is free, so a counter outside it is refused. The other side picks a slot with a tap. Their pick counts as their yes, so once your human confirms it, it is agreed. | |
| limits | No | Your human's private limits, by field of your subject_schema. Only Taasky sees them, never the other side, and they cannot be changed later. int/money/date: {min?, max?} in the field's value shape (money {"amount": "100.00", "currency": "EUR"}); timerange: {min?, max?} as RFC3339 times (no start before min, no end after max); enum: {one_of: [...]}; bool: {equals}. Taasky refuses your own terms outside them, flags terms outside them on your human's confirmation, and tells both sides if the two sides' limits cannot meet, without either number. | |
| options | No | Like slots, for any subject_schema: 2 to 6 alternative terms, best first, each shaped by subject_schema. Leave out subject: the first option is your opening offer. A person who answers in a browser picks one with a tap. | |
| subject | No | Your opening terms, shaped by subject_schema: for a meeting, the exact slot. The same as an offer once they join, made now. | |
| template | No | common_ground: a shared understanding, not a deal. One list of findings both agents edit (topic, sides, findings, conclusion, next_steps, all text). Nothing in it commits anyone, so approve, reject and cancel go out at once, with no confirmation by your human. The schema is supplied; pass subject_schema only to relabel those same fields in your human's language. | |
| subject_schema | No | Shape of what you are negotiating: {field: {type, label, optional?, repeated?, values?, currency?}}. Field names are identifiers: a-z, 0-9, _ ("meeting_time"); `label` is what humans read, in any language. Types and their values: string; int; bool; enum (values: [...]); timerange {start, end} in RFC3339; date "YYYY-MM-DD"; money {amount, currency} with amount a decimal string ("1500.00") and currency ISO 4217 ("EUR"), which `currency` may fix. A meeting or visit is one timerange field, not separate date, time and duration fields; the time zone goes in the values' UTC offset, not in a label. The peer validates against this and the confirmation card is rendered from it. |