Skip to content

Ids

Every record id is a prefix that names its Noun and a 10-character opaque body that nothing ever parses.

A record's id is a prefix, an underscore and a 10-character body. cus_K1BROJhqzZ is Riverside Property, a Customer of Leaseline.

Prefix, then body

PartIn cus_K1BROJhqzZRule
PrefixcusNames the Noun. One prefix per Noun, in lowercase letters and digits.
Separator_Splits the prefix from the body.
BodyK1BROJhqzZ10 characters from A to Z, a to z and 0 to 9. Opaque.

Prefixes are short where Stripe set the pattern: cus for a Customer, sub for a Subscription, inv for an Invoice and evt for an Event. Every other Noun uses its own name, such as offer and startup.

A Noun a Startup adds takes its own name as its prefix. Leaseline's Lease records are ids such as lease_4loEed1JG4.

Never parse the body

The body holds no date, no counter and no type, and its length never changes. Store an id whole, compare it whole, and pass it back unchanged.

  • To learn the Noun, read the prefix or the record's $type.
  • To order records, sort by createdAt or by an Event's seq, never by id.
  • To learn whether a record exists, get it: a well-formed id can name nothing.

Where an id goes

An id is the last segment of the record's $id. Every input that names a record takes either form:

TypeScript
import { $ } from 'startup-builder'

await $.Invoice.collect({ invoice: 'inv_FXANyzQojc' })
await $.Invoice.collect({ invoice: 'https://api.sb/leaseline.app/invoices/inv_FXANyzQojc' })

The namespace in $id names the Startup that holds the record, and an id is unique within its namespace.

Keys are not ids

A key is a credential, never a record id. leaseline_sk_live_ begins every live secret key Leaseline's Customers hold: the Brand, the kind and the environment.

The API Key record behind a key has an id of its own, key_KpTRSdhqzZ, and no $id ever holds the secret. Keys lists every kind.

Every prefix

NounPrefixExampleIn
Access Levelaccess_access_j5KyKnerKBleaseline.app
Accountacct_acct_nV4f0K7dTwleaseline.app
Acquisitionacquisition_acquisition_cWFeSd4Drsleaseline.app
Actionact_act_br07HsG8MGleaseline.app
Adad_ad_yVW4IAmeOWleaseline.app
Agentagent_agent_tCzKDMorKnleaseline.app
Agreementagreement_agreement_zHIUnX8LwYleaseline.app
API Keykey_key_BG13nfhe26ratebook.dev
Appapp_app_sAebuEW683leaseline.app
Approvalapproval_approval_TlxQeWh9uXleaseline.app
Attestationattestation_attestation_reixEU2HGBtutorloop.com
Audienceaudience_audience_vmVkEYrXCNleaseline.app
Auditaudit_audit_fc7p71vG8sleaseline.app
Availabilityavailability_availability_8Zj0a7vvRlleaseline.app
Billbill_bill_Zorj7Zkbtcleaseline.app
Brandbrand_brand_PluVQrB1HFleaseline.app
Budgetbudget_budget_qnCdsFGLVNleaseline.app
Builderbuilder_builder_rD7xw2HGBDleaseline.app
Campaigncampaign_campaign_NYwCp4DcIIleaseline.app
Candidatecandidate_candidate_CR5hpwMwhWleaseline.app
Capabilitycapability_capability_h9zWCOrAyZleaseline.app
Capital Callcapcall_capcall_ecGmvb6QGOleaseline.app
Capital Commitmentcapcommit_capcommit_AIP9OFatRRleaseline.app
Cardcard_card_YkjOnjSexqleaseline.app
Changechange_change_3Ex8uVSOyQleaseline.app
Channelchannel_channel_EQ8se34AOWleaseline.app
Cohortcohort_cohort_YxPOKnSexqleaseline.app
Collectioncollection_collection_txTK8QorKnleaseline.app
Commentcomment_comment_MUIgpgdysqleaseline.app
Commissioncommission_commission_oYhMioUeCHleaseline.app
Companycompany_company_28zYNZEno0leaseline.app
Componentcomponent_component_1qALyfTlfxleaseline.app
Consentconsent_consent_lMkrg7nUGYleaseline.app
Contactcontact_contact_WsrosCQi6Jleaseline.app
Contentcontent_content_HYlnoorBdPleaseline.app
Controlcontrol_control_o4pMmXUeCHleaseline.app
Conversationconversation_conversation_0vg6SDjB6kleaseline.app
Costcost_cost_2SqYsIEno0leaseline.app
Couponcoupon_coupon_rAfxMa2HGBleaseline.app
Credentialcredential_credential_Abb9zatRR1leaseline.app
Credit Grantcredgr_credgr_PduV9IB1HFleaseline.app
Criterioncriterion_criterion_GWSHmCK100leaseline.app
Customercus_cus_K1BROJhqzZleaseline.app
Dashboarddashboard_dashboard_QL9I0ALqO4leaseline.app
Datasetdataset_dataset_UDQXk0KsJBratebook.dev
Dealdeal_deal_NgACZ6DcIIleaseline.app
Decisiondecision_decision_ipoch3tTJhleaseline.app
Demand Budgetdemand_demand_zQZUG08LwYleaseline.app
Disputedp_dp_gywlshZJ7Aleaseline.app
DNS Recorddns_dns_66ja94YImdleaseline.app
Documentdocument_document_af2wijcmRyleaseline.app
Domaindomain_domain_VbYut4CTsHkilnbakery.com
Enrollmentenrollment_enrollment_t2LKaLorKnleaseline.app
Entitlementent_ent_7MQACmrzGjleaseline.app
Entryentry_entry_syZbJCW683leaseline.app
Evaluatorevaluator_evaluator_cYmeRK4Drsclausecheck.ai
Eventevt_evt_9wPvd8R17Lleaseline.app
Evidenceevidence_evidence_6xsa6iYImdleaseline.app
Experimentexperiment_experiment_IyIJJPngKtleaseline.app
Exposureexposure_exposure_Ua2Xw4KsJBleaseline.app
Filefile_file_V1AuhyCTsHleaseline.app
Flagflag_flag_1YJLhjTlfxleaseline.app
Flowflow_flow_uuJzIzjvrpleaseline.app
Forecastforecast_forecast_a2kwkwcmRyleaseline.app
Formform_form_lG4rManUGYleaseline.app
Functionfunction_function_6nvaxFYImdleaseline.app
Fundfund_fund_DdBhuF6mF5leaseline.app
Fund Distributiondist_dist_7RVAPzrzGjleaseline.app
Funnelfunnel_funnel_nXbfyw7dTwleaseline.app
Gatheringgathering_gathering_ACB9Q1atRRleaseline.app
Goalgoal_goal_L9PBQQhfuFleaseline.app
Guardguard_guard_WtKo3jQi6Jleaseline.app
Handlehandle_handle_FcnNwYQujcleaseline.app
Holderholder_holder_e2Dm5Y6QGOleaseline.app
Humanhuman_human_EeCsrv4AOWleaseline.app
Hypothesishypothesis_hypothesis_Z1gjx1kbtcleaseline.app
ICPicp_icp_EwhsJU4AOWleaseline.app
Ideaidea_idea_912vmxR17Lleaseline.app
Implementationimplementation_implementation_gnulUgZJ7Aleaseline.app
Incidentincident_incident_2XOYkIEno0leaseline.app
Instrumentinstrument_instrument_yZz4i2meOWleaseline.app
Integrationintegration_integration_alVwjQcmRyleaseline.app
Interfaceinterface_interface_TMyQ3kh9uXleaseline.app
Interviewinterview_interview_DZxhK36mF5leaseline.app
Invoiceinv_inv_9sfvgeRT7Lleaseline.app
Issueissue_issue_vWekeqrXCNleaseline.app
Key Resultkr_kr_fN3pcvG8sqleaseline.app
Keywordkeyword_keyword_cEoeFM4Drsleaseline.app
Leadlead_lead_Kz1R9fhqzZleaseline.app
Lifecyclelifecycle_lifecycle_DfihmW6mF5leaseline.app
Limitlimit_limit_UWHXYVKsJBleaseline.app
Mailboxmailbox_mailbox_93HvOnR17Lleaseline.app
Mandatemandate_mandate_mKKPrmFQYDleaseline.app
Mappingmapping_mapping_WOromrQi6Jratebook.dev
Marketmarket_market_4uFEzN14G4leaseline.app
Meetingmeeting_meeting_TyEQGjh9uXleaseline.app
Meeting Typemtgtype_mtgtype_qw2d5yGLVNleaseline.app
Member Directorydirectory_directory_qZldlwGLVNleaseline.app
Memorymemory_memory_Y52OcaSexqleaseline.app
Messagemessage_message_3Dg8ysSOyQleaseline.app
Metermtr_mtr_z08Ufi8LwYratebook.dev
Metricmetric_metric_GXFHAlK100leaseline.app
Minimum Success Criteriamsc_msc_3UF8zdSOyQleaseline.app
Modemode_mode_oiFMqiUeCHleaseline.app
Monitormonitor_monitor_8Ed0ESvvRlleaseline.app
Motionmotion_motion_NK8CerDcIIleaseline.app
Newsletternewsletter_newsletter_FLjN3aQujcleaseline.app
Nounnoun_noun_v0akLUrXCNleaseline.app
Offeroffer_offer_2hzYe1ERo0leaseline.app
Openingopening_opening_3rD8qFSOyQleaseline.app
Orderorder_order_dswDnxf2vtleaseline.app
Organizationorganization_organization_v0SkRLrXCNleaseline.app
Outcome Contractoutcome_outcome_goNlouZJ7Acatalogmend.com
Pagepage_page_A8w9CXatRRkilnbakery.com
Partnerpartner_partner_YcEOEgSexqleaseline.app
Partyparty_party_hmQWaPrAyZleaseline.app
Pay Runpayrun_payrun_hqqWu5rAyZleaseline.app
Payment Sourcepm_pm_puFT0MuuUMleaseline.app
Periodperiod_period_VEVuYACTsHleaseline.app
Permissionpermission_permission_1IFL54Tlfxleaseline.app
Personperson_person_sLqbXbW683leaseline.app
Personapersona_persona_YdpO6wSexqleaseline.app
Playplay_play_hr4WTcrAyZleaseline.app
Play Mixmix_mix_TTNQqOh9uXleaseline.app
Policypolicy_policy_rTYxr62HGBleaseline.app
Portalportal_portal_DDBhWh6mF5kilnbakery.com
Portfolioportfolio_portfolio_zkvUnP8LwYleaseline.app
Postpost_post_HiXn57rBdPleaseline.app
Priceprice_price_H8MnXDrBdPleaseline.app
Problemproblem_problem_UzvXXfKsJBleaseline.app
Processprocess_process_X2zteZ3CQIleaseline.app
Productprod_prod_MJmgS5dysqleaseline.app
Product Templateptpl_ptpl_mLTPhHFQYDleaseline.app
Projectproject_project_pUWTSQuuUMleaseline.app
Proofproof_proof_8mV0dnvvRlleaseline.app
Prospectprospect_prospect_S8bqJCxC9Rleaseline.app
Publicationpublication_publication_7HeATsrzGjleaseline.app
Purposepurpose_purpose_Aoz9nBatRRleaseline.app
Questionquestion_question_zuqUHd8LwYleaseline.app
Quoteqt_qt_GZnH5OK100leaseline.app
Readoutreadout_readout_dlRDxjf2vtleaseline.app
Recordingrecording_recording_yPU4aemeOWleaseline.app
Recovery Objectiverecovery_recovery_MSAgl5dysqleaseline.app
Referralreferral_referral_I89J7wngKtleaseline.app
Registrationregistration_registration_95lvb7R17Lleaseline.app
Relationshiprelationship_relationship_iUVcHztTJhleaseline.app
Renewalrenewal_renewal_NrJC9bDcIIleaseline.app
Reserved Actreserved_reserved_PKPVsB1HFftutorloop.com
Resourceresource_resource_hIVWDprAyZratebook.dev
Reviewreview_review_1XPL2xTlfxleaseline.app
Riskrisk_risk_a3Rw0qcmRyleaseline.app
Rolerole_role_oloMFMUeCHleaseline.app
Role Reviewrolereview_rolereview_Eflst84AOWleaseline.app
Screeningscreening_screening_oSWMvQUeCHleaseline.app
Secretsecret_secret_UaNXUkKsJBleaseline.app
Sequencesequence_sequence_H7knHGrBdPleaseline.app
Serviceservice_service_Eq1ssq4AOWcatalogmend.com
Settingsetting_setting_mfZPXxFQYDleaseline.app
Shareshare_share_yiQ4iEmeOWleaseline.app
Sitesite_site_kqt1HxwFabkilnbakery.com
Skillskill_skill_xBqG4zTxBAleaseline.app
Softwaresoftware_software_D5qhJn6mF5leaseline.app
Sourcesource_source_DIdhfB6mF5ratebook.dev
SSO Connectionsso_sso_gFlPhZJ7A7leaseline.app
Standardstandard_standard_F9HNNHQujcratebook.dev
Startupstartup_startup_l3hr1EnUGYleaseline.app
Startup Templatestpl_stpl_9OivLWR17Lleaseline.app
Statementstatement_statement_q6edL5GLVNleaseline.app
Storystory_story_ujkz1xjvrpleaseline.app
Studiostudio_studio_JCwiflZmXbleaseline.app
Subscriptionsub_sub_whVFaHKWIVleaseline.app
Suppliersupplier_supplier_QTsIMiLqO4tutorloop.com
Suppressionsuppression_suppression_Ssbq90xC9Rleaseline.app
Surveysurvey_survey_NLUCLYDcIIleaseline.app
Systemsystem_system_uGWze2jvrpleaseline.app
Tasktask_task_tVPKjporKnleaseline.app
Teamteam_team_v8KkFBrXCNleaseline.app
Templatetemplate_template_THRQF1h9uXleaseline.app
Tenantten_ten_Bu63f0he26leaseline.app
Themetheme_theme_sZHbu0W683kilnbakery.com
Thingthing_thing_8ds0r9vvRlleaseline.app
Threadthread_thread_GzIHRhK100leaseline.app
Tooltool_tool_aTLwY2cmRyleaseline.app
Transactiontxn_txn_XoxtZe3CQIleaseline.app
Triggertrigger_trigger_Hg9n0lrBdPleaseline.app
Variantvariant_variant_nvdfmt7dTwleaseline.app
Verbverb_verb_hlkWBvrAyZleaseline.app
Versionversion_version_4HTEMs14G4leaseline.app
Videovideo_video_xVlGG2TxBAleaseline.app
Visitvisit_visit_7qNAATrzGjleaseline.app
Visitorvisitor_visitor_M5gHadysq9leaseline.app
Voicevoice_voice_s6Qb8KW683leaseline.app
Waitlistwaitlist_waitlist_rBixb72HGBleaseline.app
Watchwatch_watch_9o4vCuR17Lleaseline.app
Workerworker_worker_whZFpOKWIVleaseline.app
Workflowworkflow_workflow_2dhYBlEno0leaseline.app