Skip to main content

Documentation Index

Fetch the complete documentation index at: https://docs.usehasp.com/llms.txt

Use this file to discover all available pages before exploring further.

Naming Conventions

ThingConventionExamples
Entity keyssnake_case, pluraltasks, contacts, inventory_items
Entity namesTitle Case, plural”Tasks”, “Contacts”, “Inventory Items”
Field keyssnake_casedue_date, is_complete, contact_email
Field namesTitle Case”Due Date”, “Completed”, “Contact Email”

Best Practices

Use select over text for constrained values

If a field has a known set of valid values (status, priority, category), use select rather than text. This ensures data consistency and enables efficient filtering.
✓  status: select ["open", "in_progress", "done"]
✗  status: text (free-form — "Open", "In Progress", "DONE" are all different)

Use multi_select for tags

When a record can belong to multiple categories simultaneously, use multi_select:
tags: multi_select ["frontend", "backend", "design", "devops"]

Mark truly required fields

Only mark a field as required if the record is meaningless without it. Overly strict required fields frustrate users and complicate imports.

Use relation for cross-entity references

When a record in one entity refers to a record in another entity in the same app, use type: relation rather than a plain text field:
✓  project_id: relation → related_entity: "projects", display_field: "name"
✗  project_id: text (free-form string — no referential integrity or validation)
Hasp validates that the referenced record exists when creating or updating a record.

Keep entities focused

One entity per concept. Don’t combine “tasks” and “comments” into one entity — make two entities and use a relation field in the comments entity to point back to the task.

Set a display_field

Every entity should have a designated display_field — the field shown in lists and the Hasp dashboard. Usually this is the main name or title field.

Example Schemas

Task Tracker

FieldKeyTypeRequiredNotes
TitletitletextYesdisplay_field
DescriptiondescriptiontextareaNo
StatusstatusselectYesopen, in_progress, done
PrioritypriorityselectNolow, medium, high, critical
Due Datedue_datedateNo
Assignee Emailassignee_emailemailNo

Contact Directory

FieldKeyTypeRequired
NamenametextYes
EmailemailemailYes
CompanycompanytextNo
RoleroletextNo
WebsitewebsiteurlNo
Tagstagsmulti_selectNo
NotesnotestextareaNo

Inventory

FieldKeyTypeRequiredNotes
NamenametextYesdisplay_field
SKUskutextYes
CategorycategoryselectYes
QuantityquantitynumberYesmin: 0
Unit Priceunit_pricenumberNo
Low Stockis_low_stockbooleanNo
Last Restockedlast_restockeddateNo