What Kalup can reach, and how.
Every resource type, whether it is in v0, and how a change gets to the portal. Where HubSpot has no API, the plan says so and hands the step to a person.
Resource types.
The table comes from the endpoint registry, the one place Kalup pins each HubSpot API version.
| Resource | Address | Status | Transport | Identity | Notes |
|---|---|---|---|---|---|
| Properties | property:… | In v0 | public-api | natural | A recreated property has no values. Reuse of an archived internal name within 90 days is unverified. |
| Property groups | group:… | In v0 | public-api | natural | |
| Custom object schemas | object:… | In v0 | public-api | natural | |
| Pipelines | pipeline:… | In v0 | public-api | natural | Natural only if HubSpot honours a pipeline ID on create. Unverified; if not, pipelines become bound. |
| Pipeline stages | stage:… | In v0 | public-api | natural | Required properties per stage and stage automation have no API. The plan says so every time. |
| Association labels | association:… | In v0 | public-api | bound | Bound until a live test shows the label name comes back on read. |
| Lists | list:… | Later | not decided | bound | HubSpot assigns the ID, and listing lists is a POST. Reads come before writes. |
| Forms | form:… | Later | not decided | bound | Legacy v3 or the 2027-03 beta, decided by a live test of both. |
| Workflows | workflow:… | Later | public-beta | bound | Behind a per-resource flag. Update is a full replace, delete cannot be undone, names are not unique. |
- Transport
- public-apiThe engine makes the change through a public API.
- public-betaA documented beta API. Off until you turn it on per type in config.
- runbookNo API. The plan prints the steps and a person does them.
- not decidedNot decided yet.
- Identity
- naturalYou set a permanent key, and Kalup matches on it.
- boundHubSpot assigns the ID. State ties the address to it per target.
- Not reachable yet: sequences and sales email templates need user-level OAuth, which a target does not hold.
No API, no pretending.
These settings have no public write API. For them the plan prints a runbook in the words of the HubSpot UI: the page, the fields, the values and a check. A person does it, and Kalup never claims it did.
- Record page layoutsmanual
- Saved viewsmanual
- Conditional property logicmanual
- Required properties per stagemanual
- Pipeline automationmanual
- Permission setsmanual
Not copied, HubSpot has no API: required properties per stage, stage automation
Recording that a person did the step is kalup attest, which comes later. Because edits to these settings are invisible to any API, Kalup labels them unverifiable.
Not confirmed yet.
A few HubSpot behaviours are not documented and have not been confirmed against a live portal. Each stays labelled here until a live test settles it, and Kalup treats it as unknown until then.
- question 1unverified
Is a pipeline ID honoured on create, and what does PUT do to stage IDs?
Whether pipelines are natural or bound.
- question 2unverified
Does an association label's name come back on read?
Whether association labels are natural or bound.
- question 3unverified
What does HubSpot rewrite when a property is created?
How live properties are normalized.
- question 4unverified
Which rate-limit headers does a service key return, and which scopes can it hold?
The daily budget check. Without a daily figure it is skipped with a warning.
- question 5unverified
How long is the read-after-write lag on schema endpoints?
The read-back timeout.
- question 6unverified
Can an archived property's internal name be reused within the 90-day restore window, and do values come back?
Whether recreating is a real way back from a delete.
- question 7unverified
Does the API refuse to archive a property that is in use, and is there any public "where used" read?
Until settled, destructive steps say "Use in workflows, lists and forms: not checked".
- question 8unverified
Which editor do forms created by the legacy v3 API and by the 2027-03 beta open in?
Which forms API Kalup builds on.
- question 9unverified
Is there any scope introspection for service keys?
Until then, the preflight probes each list path and reads a 403 as a missing scope.