Docs

Get Import Schema

GET /imports/proposalLineItems/schema?contextId={proposalId}

GET/imports/proposalLineItems/schema?contextId={proposalId}

Required Tokens

FieldTypeRequiredDescription
BearerAuthorization: Bearer <api-key>OptionalYour API key. Pass it as the Bearer token on every request.
Event tokenx-Event-TokenOptionalRun **Get Tokens** in the Authorization folder, or call `GET /Events/{eventId}/authorize` manually.

The attributes a target can be mapped onto. Called when the wizard's mapping step opens.

The schema is per target, and may be derived at runtime. This request is set up for the proposal line items target; see Get Events Import Schema for the org-scoped one.

Requires EventAdmin permission on the event.

Registered targets

TargetScopeTokencontextId meansSchema
proposalLineItemsEventx-Event-Tokenthe proposalseven fixed attributes plus one per adjustment column
eventsOrganizationx-Organization-Tokenthe event typename, notes, plus that type's custom attributes

The path segment is matched case-insensitively.

Parameters

FieldTypeRequiredDescription
targetstringRequiredPath segment. See the table above.
contextIdGuidOptionalQuery. The parent the rows land in. Omitted for `events`, the schema is the first-class fields only.

Response

FieldTypeDescription
targetstringEchoes the requested target.
attributes[].keystringThe mapping key. Proposal adjustment columns are `adjustment:{guid}`; event custom attributes are `attr:{guid}`.
attributes[].labelstringDisplay label.
attributes[].kindstring`Text`, `Link`, `Number`, `Checkbox`, `Date`, `DateTime` or `Select`.
attributes[].pathstring[]The attribute's **ancestors only**, never the attribute itself — `["Adjustments"]` for an adjustment named `Sales tax`, the section name for events. Render `path` + `label`; `path` alone collapses every attribute in a group to the group's name.
attributes[].isRequiredboolMapping cannot continue until every required attribute is mapped.
attributes[].isUpdatableboolWhether an import may write this attribute onto an **existing** record. Always `false` for proposal line items, which are create-only.
attributes[].canBeUniqueboolWhether this attribute may be nominated as the match key. Always `false` for proposal line items.
attributes[].optionsarray| null`[{ value, label }]` on an attribute with a closed value domain — a `Select` — and `null` on every other kind. **Its presence is what marks the column reviewable**, so there is no separate flag. Always `null` for proposal line items.

An attribute absent from this response cannot be imported at all. Attributes whose stored value a spreadsheet cell cannot express — multi-select, rich text, files, and references to crew or collaborators, which store an entity id — are omitted rather than rejected later. This is the permanent scope of structured import, not a subset awaiting a later release: the disambiguation a name-to-id lookup needs is not something a spreadsheet cell can carry.

Errors

StatusMeaning
400Unknown target, contextId missing for a target that needs one, or the named event type is archived.
404The proposal or event type named by contextId does not exist in this scope.