Skip to main content

Documentation Index

Fetch the complete documentation index at: https://mintlify.com/ManiFed/TTN/llms.txt

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

Member endpoints power the dashboard and mobile app experience. They cover the full lifecycle of a member’s relationship with The Telescope Net: creating an account, linking telescope nodes, generating activation codes for first-boot registration, browsing observation history and cumulative statistics, managing node schedules and vacation modes, and controlling notification preferences. All endpoints except registration and login require an Authorization: Bearer <token> header obtained at login.

POST /api/v1/auth/register

Create a new member account. Returns a bearer token immediately so the client does not need a separate login step.
Auth: None
email
string
required
Valid email address. Must contain @ and a dot in the domain. Stored in lowercase. Returns 400 if the address is already registered.
password
string
required
Minimum 8 characters. Hashed server-side with PBKDF2-HMAC-SHA256 at 260,000 iterations with a per-user random salt.
display_name
string
Optional display name shown in the member dashboard. Defaults to the email prefix if omitted.

POST /api/v1/auth/login

Authenticate with email and password. Issues a new bearer token, invalidating any previously issued token for this account.
Auth: None
email
string
required
Registered email address.
password
string
required
Account password.

GET /api/v1/me

Retrieve the authenticated member’s profile.
Auth: Authorization: Bearer <token>No request body or query parameters.

DELETE /api/v1/me

Permanently delete the member account and all associated data including notifications, activation codes, node memberships, and help chat history. This action is irreversible.
Auth: Authorization: Bearer <token>
confirm
boolean
required
Must be true. The server returns 400 if this field is absent or false, preventing accidental deletion.

GET /api/v1/me/nodes

List all telescope nodes claimed by the authenticated member.
Auth: Authorization: Bearer <token>No request body or query parameters.

POST /api/v1/me/nodes/

Claim an existing node by presenting its api_key. Use this to link a node that was registered before the member account existed, or to add a second account as a co-owner.
Auth: Authorization: Bearer <token>
node_id
string
required
The node identifier to claim.
api_key
string
required
The node’s secret API key (from data/cloud_state.json on the node).

PUT /api/v1/me/nodes/

Update member-specific settings for a claimed node, such as its display name.
Auth: Authorization: Bearer <token>
node_id
string
required
Node identifier. The node must be claimed by this member.
display_name
string
Human-readable label for this node in the dashboard. Maximum 80 characters.

DELETE /api/v1/me/nodes/

Remove this member’s claim on a node, disconnecting it from their account. The node itself is not deleted — only the membership link is removed.
Auth: Authorization: Bearer <token>
node_id
string
required
Node identifier. The node must be claimed by this member.

POST /api/v1/me/nodes//session

Start a portable node’s observing session for tonight. Updates the session location, fetches sky quality for that location, and sets the node status to active. Only valid for nodes registered as portable.
Auth: Authorization: Bearer <token>
node_id
string
required
Node identifier. Must be a portable node claimed by this member.
lat
float
required
Tonight’s observing latitude in decimal degrees.
lon
float
required
Tonight’s observing longitude in decimal degrees.
city
string
Human-readable city or locality name for this session location.
site_name
string
Optional site name, e.g. "Cherry Springs State Park".

DELETE /api/v1/me/nodes//session

Manually end a portable node’s observing session, returning it to sleeping status.
Auth: Authorization: Bearer <token>
node_id
string
required
Node identifier. Must be a portable node claimed by this member.

PUT /api/v1/me/nodes//vacation

Pause a node’s observation schedule until a specified date. Nights during the vacation window are excluded from the reliability score calculation. The scheduler will not generate plans for a node on vacation.
Auth: Authorization: Bearer <token>
node_id
string
required
Node identifier. The node must be claimed by this member.
until_date
string
required
ISO date string in YYYY-MM-DD format specifying the last day of vacation.

DELETE /api/v1/me/nodes//vacation

Cancel an active vacation early, returning the node to its normal operating status.
Auth: Authorization: Bearer <token>
node_id
string
required
Node identifier. The node must be claimed by this member.

POST /api/v1/me/activation-code

Generate a personal activation code for linking a new node to this account. The code is embedded in the installer flow and is consumed during POST /api/v1/nodes/register. Codes expire after 30 days.
Auth: Authorization: Bearer <token>
location_name
string
Place name for the observatory, e.g. "Rockwood TX". Geocoded via Nominatim and stored with the code so the node automatically receives coordinates at registration.
latitude
float
Observatory latitude. Takes precedence over location_name geocoding when provided together with longitude.
longitude
float
Observatory longitude.
telescope_model
string
Telescope model chosen in the app, e.g. "ZWO Seestar S50". Used to seed hardware spec defaults at registration.
telescope_display_name
string
Human-readable name for this specific telescope, max 80 characters.
portable
boolean
true if this will be a portable node.

GET /api/v1/me/observations

Retrieve photometry measurements uploaded by all nodes owned by this member, most recent first.
Auth: Authorization: Bearer <token>
days
integer
Look-back window in days. Default 90, maximum 365.
limit
integer
Maximum number of rows to return. Default 200, maximum 100,000.

GET /api/v1/me/stats

Retrieve cumulative photometry statistics across all nodes owned by this member.
Auth: Authorization: Bearer <token>No request body or query parameters.

GET /api/v1/me/timeline

Retrieve tonight’s planned observing timeline across all nodes owned by this member. Each item in the response includes a derived state field (planned, observing, or complete) based on the node’s local wall clock time.
Auth: Authorization: Bearer <token>No request body or query parameters.

GET /api/v1/me/nights

Retrieve night-by-night observation summaries for all nodes owned by this member, most recent first.
Auth: Authorization: Bearer <token>
limit
integer
Maximum number of nights to return. Default 30, maximum 90.

GET /api/v1/me/highlights

Retrieve notable observation highlights for the authenticated member — events such as a first detection or a rare outburst, surfaced automatically by the cloud pipeline.
Auth: Authorization: Bearer <token>
limit
integer
Maximum number of highlights to return. Default 50, maximum 200.

POST /api/v1/me/highlights//read

Mark a highlight as read.
Auth: Authorization: Bearer <token>
highlight_id
integer
required
Highlight ID from the highlights list.

GET /api/v1/me/incidents

Retrieve recent reliability incidents for all nodes owned by this member.
Auth: Authorization: Bearer <token>
limit
integer
Maximum number of incidents to return. Default 50, maximum 200.

GET /api/v1/me/notifications

Retrieve the notification inbox for the authenticated member, most recent first.
Auth: Authorization: Bearer <token>
limit
integer
Maximum number of notifications to return. Default 50, maximum 200.

POST /api/v1/me/notifications//read

Mark a notification as read.
Auth: Authorization: Bearer <token>
id
integer
required
Notification ID from the notifications list.

PUT /api/v1/me/notifications/prefs

Update notification delivery preferences.
Auth: Authorization: Bearer <token>
notification_email
boolean
Enable or disable email notifications.
notification_push
boolean
Enable or disable push notifications to the registered mobile app.
push_token
string
Mobile push token (up to 500 characters) to register or update.

POST /api/v1/me/science-program-suggestions

Submit a science program idea to the The Telescope Net team. Suggestions are reviewed by administrators and may influence future target ingestion and scheduling priorities.
Auth: Authorization: Bearer <token>
title
string
required
Short title for the suggested science program (max 200 characters).
description
string
required
Full description of the scientific rationale (max 5,000 characters).
target_examples
string
Example target names or categories (max 2,000 characters).
notes
string
Additional notes or references (max 2,000 characters).

GET /api/v1/me/help

Retrieve the help session for the authenticated member, including contact information, the weekly chat quota, and recent chat history.
Auth: Authorization: Bearer <token>No request body or query parameters.

POST /api/v1/me/help/chat

Send a message to the OpenRouter-powered help assistant. Members are limited to 5 user messages per week. The assistant has access to the member’s node configuration context and can generate configuration patches that the node agent applies automatically.
Auth: Authorization: Bearer <token>
message
string
required
The help message text to send to the assistant.
node_id
string
Optional node ID to scope the assistant’s context to a specific node’s configuration.

Build docs developers (and LLMs) love