Skip to content
EndpointOS/abhi/test-api-abhipublic docs

Test API - Abhi

liveOpenAPI 3.1Version v1

Send auto data to others

Maintained by abhiUpdated May 11, 20262 resources1,000 requests/month
Introduction

A live REST API reference generated from Test API - Abhi.

This documentation is generated from the project schema in EndpointOS. It shows the public method surface, authentication model, request schemas, response contracts, errors, pagination, usage limits, and OpenAPI export.

Quickstart

Make the first request

Use a project API key with the base URL and one of the generated resource paths. EndpointOS never displays private API keys in public documentation.

  1. Issue a read or write key from the project dashboard.
  2. Send it in Authorization: Bearer sapi_live_xxxxxxxx or x-api-key.
  3. Call one of the generated endpoints below.
  4. Inspect the request log and monthly usage in EndpointOS.
Run it/feature-requests
curl "https://endpointos.dev/api/public/abhi/test-api-abhi/v1/feature-requests?limit=20&offset=0" \
  -H "Authorization: Bearer sapi_live_xxxxxxxx"
Response contractJSON envelope
{
  "data": [],
  "pagination": {
    "limit": 20,
    "offset": 0,
    "total": 0
  }
}

Authentication

API keys on every request

Every public request requires an EndpointOS API key. Key permissions are checked first, then each resource access mode decides which generated methods are exposed.

HeaderValueUse when
AuthorizationBearer sapi_live_xxxxxxxxRecommended for server-to-server calls.
x-api-keysapi_test_xxxxxxxxUseful for curl examples and simple clients.
HeadersEither format works
Authorization: Bearer sapi_live_xxxxxxxx
x-api-key: sapi_test_xxxxxxxx

Base URL

Project-level API namespace

All endpoints below are relative to this base URL. The username and project slug are part of the namespace so different builders can publish APIs with the same project name without collisions.

https://endpointos.dev/api/public/abhi/test-api-abhi/v1

Resource behavior

Access modes and data sources

Each resource controls its public method surface. API key permissions still apply, but a resource can intentionally expose fewer methods for dataset, lookup, or intake APIs.

Read/write

GET, POST, PATCH, DELETEManaged APIs that need the full record lifecycle.

Read-only

GETPublic datasets, reporting feeds, lookup APIs, and partner data products.

Write-only

POSTLead capture, form submissions, events, and private intake APIs.
Resource

feature-requests

/feature-requests

Endpoints generated from this resource schema and access mode.

feature-requestsEndpointOS managedRead/write5 endpoints
FieldTypeRequiredUniqueDefaultEnum valuesNotes
titlestringYesNoNoneNoneRequired on create. String value
descriptionstringNoNoNoneNoneString value
submitterEmailstringYesNoNoneNoneRequired on create. String value
statusenumNoNoNonenew, planned, inProgress, shipped, closedMust match one enum value
priorityenumNoNoNonelow, medium, highMust match one enum value
votesnumberNoNoNoneNoneFinite numeric value
isPublicbooleanNoNoNoneNonetrue or false
titlestring
Required
Yes
Unique
No
Default
None
Enum
None
Notes
Required on create. String value
descriptionstring
Required
No
Unique
No
Default
None
Enum
None
Notes
String value
submitterEmailstring
Required
Yes
Unique
No
Default
None
Enum
None
Notes
Required on create. String value
statusenum
Required
No
Unique
No
Default
None
Enum
new, planned, inProgress, shipped, closed
Notes
Must match one enum value
priorityenum
Required
No
Unique
No
Default
None
Enum
low, medium, high
Notes
Must match one enum value
votesnumber
Required
No
Unique
No
Default
None
Enum
None
Notes
Finite numeric value
isPublicboolean
Required
No
Unique
No
Default
None
Enum
None
Notes
true or false

Every record response also includes the server-managed id, createdAt, and updatedAt fields shown in the response example below.

GET/feature-requests

List feature-requests

Returns non-deleted records with pagination, filters, search, and sorting.

API key requiredRead-only or read-writeLogs every request

Request body

This endpoint does not accept a request body.

Possible responses
200OKsuccessRequest succeeded and returned a JSON response.
400Validation errorclientA filter, sort, or search parameter is malformed or unsupported by this resource's data source.
401UnauthorizedclientMissing or invalid API key.
429Rate limitedclientThe project reached its monthly request limit.
RequestGET /feature-requests
curl "https://endpointos.dev/api/public/abhi/test-api-abhi/v1/feature-requests" \
  -H "Authorization: Bearer sapi_live_xxxxxxxx"
Response example200 OK
{
  "data": [
    {
      "id": "rec_abc123",
      "title": "Dark mode",
      "description": "Add a darker theme for late-night work sessions.",
      "submitterEmail": "founder@example.com",
      "status": "new",
      "priority": "low",
      "votes": 42,
      "isPublic": true,
      "createdAt": "2026-05-11T10:30:00.000Z",
      "updatedAt": "2026-05-11T10:30:00.000Z"
    }
  ],
  "pagination": {
    "limit": 20,
    "offset": 0,
    "total": 1
  }
}
Error exampleConsistent error object
{
  "error": {
    "code": "UNAUTHORIZED",
    "message": "A valid EndpointOS API key is required.",
    "details": {}
  }
}
POST/feature-requests

Create a feature-request

Validates the JSON body against the resource schema and creates a record.

API key requiredRead-writeLogs every request

Request body

FieldTypeRequiredNotes
titlestringYesRequired on create. String value
descriptionstringNoString value
submitterEmailstringYesRequired on create. String value
statusenumNoMust match one enum value
priorityenumNoMust match one enum value
votesnumberNoFinite numeric value
isPublicbooleanNotrue or false
titlestring
Required
Yes
Notes
Required on create. String value
descriptionstring
Required
No
Notes
String value
submitterEmailstring
Required
Yes
Notes
Required on create. String value
statusenum
Required
No
Notes
Must match one enum value
priorityenum
Required
No
Notes
Must match one enum value
votesnumber
Required
No
Notes
Finite numeric value
isPublicboolean
Required
No
Notes
true or false
Possible responses
201CreatedsuccessRecord created and returned in the data envelope.
400Validation errorclientRequired, typed, enum, or unknown-field validation failed.
401UnauthorizedclientMissing or invalid API key.
403ForbiddenclientThe key or resource access mode does not permit this method.
429Rate limitedclientThe project reached its monthly request limit.
RequestPOST /feature-requests
curl -X POST "https://endpointos.dev/api/public/abhi/test-api-abhi/v1/feature-requests" \
  -H "Authorization: Bearer sapi_live_xxxxxxxx" \
  -H "Content-Type: application/json" \
  -d '{"title":"Dark mode","description":"Add a darker theme for late-night work sessions.","submitterEmail":"founder@example.com","status":"new","priority":"low","votes":42,"isPublic":true}'
Response example201 Created
{
  "data": {
    "id": "rec_abc123",
    "title": "Team workspace",
    "description": "Let teams share one API project workspace.",
    "submitterEmail": "founder@example.com",
    "status": "new",
    "priority": "low",
    "votes": 42,
    "isPublic": true,
    "createdAt": "2026-05-11T10:30:00.000Z",
    "updatedAt": "2026-05-11T10:42:00.000Z"
  }
}
Error exampleConsistent error object
{
  "error": {
    "code": "VALIDATION_ERROR",
    "message": "Unknown field 'unexpected' is not defined on this resource.",
    "details": {
      "field": "unexpected"
    }
  }
}
GET/feature-requests/{id}

Retrieve a feature-request

Returns one non-deleted record by id.

API key requiredRead-only or read-writeLogs every request

Request body

This endpoint does not accept a request body.

Possible responses
200OKsuccessRequest succeeded and returned a JSON response.
401UnauthorizedclientMissing or invalid API key.
404Not foundclientThe record id does not exist or was soft-deleted.
429Rate limitedclientThe project reached its monthly request limit.
RequestGET /feature-requests/{id}
curl "https://endpointos.dev/api/public/abhi/test-api-abhi/v1/feature-requests/rec_abc123" \
  -H "Authorization: Bearer sapi_live_xxxxxxxx"
Response example200 OK
{
  "data": {
    "id": "rec_abc123",
    "title": "Team workspace",
    "description": "Let teams share one API project workspace.",
    "submitterEmail": "founder@example.com",
    "status": "new",
    "priority": "low",
    "votes": 42,
    "isPublic": true,
    "createdAt": "2026-05-11T10:30:00.000Z",
    "updatedAt": "2026-05-11T10:42:00.000Z"
  }
}
Error exampleConsistent error object
{
  "error": {
    "code": "RECORD_NOT_FOUND",
    "message": "Record not found.",
    "details": {
      "id": "rec_abc123"
    }
  }
}
PATCH/feature-requests/{id}

Update a feature-request

Accepts a partial JSON body and validates any supplied fields.

API key requiredRead-writeLogs every request

Request body

FieldTypeRequiredNotes
titlestringNoOptional on PATCH.
descriptionstringNoOptional on PATCH.
submitterEmailstringNoOptional on PATCH.
statusenumNoOptional on PATCH.
priorityenumNoOptional on PATCH.
votesnumberNoOptional on PATCH.
isPublicbooleanNoOptional on PATCH.
titlestring
Required
No
Notes
Optional on PATCH.
descriptionstring
Required
No
Notes
Optional on PATCH.
submitterEmailstring
Required
No
Notes
Optional on PATCH.
statusenum
Required
No
Notes
Optional on PATCH.
priorityenum
Required
No
Notes
Optional on PATCH.
votesnumber
Required
No
Notes
Optional on PATCH.
isPublicboolean
Required
No
Notes
Optional on PATCH.
Possible responses
200OKsuccessRequest succeeded and returned a JSON response.
400Validation errorclientRequired, typed, enum, or unknown-field validation failed.
401UnauthorizedclientMissing or invalid API key.
403ForbiddenclientThe key or resource access mode does not permit this method.
404Not foundclientThe record id does not exist or was soft-deleted.
429Rate limitedclientThe project reached its monthly request limit.
RequestPATCH /feature-requests/{id}
curl -X PATCH "https://endpointos.dev/api/public/abhi/test-api-abhi/v1/feature-requests/rec_abc123" \
  -H "Authorization: Bearer sapi_live_xxxxxxxx" \
  -H "Content-Type: application/json" \
  -d '{"title":"Team workspace","description":"Let teams share one API project workspace."}'
Response example200 OK
{
  "data": {
    "id": "rec_abc123",
    "title": "Team workspace",
    "description": "Let teams share one API project workspace.",
    "submitterEmail": "founder@example.com",
    "status": "new",
    "priority": "low",
    "votes": 42,
    "isPublic": true,
    "createdAt": "2026-05-11T10:30:00.000Z",
    "updatedAt": "2026-05-11T10:42:00.000Z"
  }
}
Error exampleConsistent error object
{
  "error": {
    "code": "VALIDATION_ERROR",
    "message": "Unknown field 'unexpected' is not defined on this resource.",
    "details": {
      "field": "unexpected"
    }
  }
}
DELETE/feature-requests/{id}

Delete a feature-request

Soft deletes the record. List endpoints exclude deleted records.

API key requiredRead-writeLogs every request

Request body

This endpoint does not accept a request body.

Possible responses
200OKsuccessRequest succeeded and returned a JSON response.
401UnauthorizedclientMissing or invalid API key.
403ForbiddenclientThe key or resource access mode does not permit this method.
404Not foundclientThe record id does not exist or was soft-deleted.
429Rate limitedclientThe project reached its monthly request limit.
RequestDELETE /feature-requests/{id}
curl -X DELETE "https://endpointos.dev/api/public/abhi/test-api-abhi/v1/feature-requests/rec_abc123" \
  -H "Authorization: Bearer sapi_live_xxxxxxxx"
Response example200 OK
{
  "data": {
    "id": "rec_abc123",
    "deleted": true
  }
}
Error exampleConsistent error object
{
  "error": {
    "code": "RECORD_NOT_FOUND",
    "message": "Record not found.",
    "details": {
      "id": "rec_abc123"
    }
  }
}
Resource

temperature sensor

/temperature-sensor

Normalised records from temperature_sensor. Written by the ingest pipeline.

temperature-sensorIngested streamRead-only2 endpoints
FieldTypeRequiredUniqueDefaultEnum valuesNotes
device_idstringYesNoNoneNoneRequired on create. String value
device_typestringYesNoNoneNoneRequired on create. String value
timestampdatetimeYesNoNoneNoneRequired on create. ISO datetime string
source_typestringYesNoNoneNoneRequired on create. String value
battery_pctnumberNoNoNoneNoneFinite numeric value
firmwarestringNoNoNoneNoneString value
temperaturenumberNoNoNoneNoneFinite numeric value
device_idstring
Required
Yes
Unique
No
Default
None
Enum
None
Notes
Required on create. String value
device_typestring
Required
Yes
Unique
No
Default
None
Enum
None
Notes
Required on create. String value
timestampdatetime
Required
Yes
Unique
No
Default
None
Enum
None
Notes
Required on create. ISO datetime string
source_typestring
Required
Yes
Unique
No
Default
None
Enum
None
Notes
Required on create. String value
battery_pctnumber
Required
No
Unique
No
Default
None
Enum
None
Notes
Finite numeric value
firmwarestring
Required
No
Unique
No
Default
None
Enum
None
Notes
String value
temperaturenumber
Required
No
Unique
No
Default
None
Enum
None
Notes
Finite numeric value

Every record response also includes the server-managed id, createdAt, and updatedAt fields shown in the response example below.

GET/temperature-sensor

List temperature-sensor

Returns non-deleted records with pagination, filters, search, and sorting.

API key requiredRead-only or read-writeLogs every request

Request body

This endpoint does not accept a request body.

Possible responses
200OKsuccessRequest succeeded and returned a JSON response.
400Validation errorclientA filter, sort, or search parameter is malformed or unsupported by this resource's data source.
401UnauthorizedclientMissing or invalid API key.
429Rate limitedclientThe project reached its monthly request limit.
RequestGET /temperature-sensor
curl "https://endpointos.dev/api/public/abhi/test-api-abhi/v1/temperature-sensor" \
  -H "Authorization: Bearer sapi_live_xxxxxxxx"
Response example200 OK
{
  "data": [
    {
      "id": "rec_abc123",
      "device_id": "rec_abc123",
      "device_type": "Example",
      "timestamp": "2026-05-11T10:30:00.000Z",
      "source_type": "Example",
      "battery_pct": 1200,
      "firmware": "Example",
      "temperature": 21,
      "createdAt": "2026-05-11T10:30:00.000Z",
      "updatedAt": "2026-05-11T10:30:00.000Z"
    }
  ],
  "pagination": {
    "limit": 20,
    "offset": 0,
    "total": 1
  }
}
Error exampleConsistent error object
{
  "error": {
    "code": "UNAUTHORIZED",
    "message": "A valid EndpointOS API key is required.",
    "details": {}
  }
}
GET/temperature-sensor/{id}

Retrieve a temperature-sensor

Returns one non-deleted record by id.

API key requiredRead-only or read-writeLogs every request

Request body

This endpoint does not accept a request body.

Possible responses
200OKsuccessRequest succeeded and returned a JSON response.
401UnauthorizedclientMissing or invalid API key.
404Not foundclientThe record id does not exist or was soft-deleted.
429Rate limitedclientThe project reached its monthly request limit.
RequestGET /temperature-sensor/{id}
curl "https://endpointos.dev/api/public/abhi/test-api-abhi/v1/temperature-sensor/rec_abc123" \
  -H "Authorization: Bearer sapi_live_xxxxxxxx"
Response example200 OK
{
  "data": {
    "id": "rec_abc123",
    "device_id": "rec_def456",
    "device_type": "Updated example",
    "timestamp": "2026-05-11T10:30:00.000Z",
    "source_type": "Example",
    "battery_pct": 1200,
    "firmware": "Example",
    "temperature": 21,
    "createdAt": "2026-05-11T10:30:00.000Z",
    "updatedAt": "2026-05-11T10:42:00.000Z"
  }
}
Error exampleConsistent error object
{
  "error": {
    "code": "RECORD_NOT_FOUND",
    "message": "Record not found.",
    "details": {
      "id": "rec_abc123"
    }
  }
}

Conventions

Pagination

List endpoints support limit and offset. The default limit is 20 and the maximum limit is 100.

Query parameters
limitnumberoptionalPage size. Defaults to 20 and caps at 100.
offsetnumberoptionalZero-based offset for the first returned record.
List responsePaginated
{
  "data": [
    {
      "id": "rec_abc123",
      "title": "Dark mode",
      "createdAt": "2026-05-11T10:30:00.000Z",
      "updatedAt": "2026-05-11T10:30:00.000Z"
    }
  ],
  "pagination": {
    "limit": 20,
    "offset": 0,
    "total": 1
  }
}

Conventions

Filtering

What a collection endpoint accepts depends on where its data lives. The table below is generated from what each resource\u2019s data source actually implements, so a control listed here is one the API will honour, and a control missing from it returns 400 UNSUPPORTED_QUERY rather than quietly ignoring you.

/feature-requests (EndpointOS managed)

Query controls
field=valuestringoptionalEquality filter. Any defined field.
field[ne]stringoptionalExclude records matching this value.
field[in]stringoptionalComma-separated list of values.
field[gt]stringoptionalGreater than. Number, date and datetime fields.
field[gte]stringoptionalGreater than or equal.
field[lt]stringoptionalLess than.
field[lte]stringoptionalLess than or equal.
qstringoptionalSearch string and enum fields.
sortstringoptionalSort by a field, createdAt, or updatedAt.
limitintegeroptionalPage size, up to 100.
offsetintegeroptionalRecords to skip.

/temperature-sensor (Ingested stream)

Query controls
field=valuestringoptionalEquality filter. Only actor_id, device_id, entity_id, metric, order_id, record_id.
limitintegeroptionalPage size, up to 100.
offsetintegeroptionalRecords to skip.
Filtered requestGET
GET /feature-requests?title[in]=value1,value2&votes[gte]=10&limit=20

Conventions

Errors

EndpointOS returns stable error codes so clients can handle validation, auth, missing records, and usage limits without parsing prose.

CodeStatusMeaning
UNAUTHORIZED401Missing, malformed, or invalid API key.
FORBIDDEN403The API key cannot perform this operation.
PROJECT_NOT_FOUND404The project slug does not resolve to an API.
API_VERSION_NOT_FOUND404The requested API version does not exist.
API_CONTRACT_NOT_PUBLISHED404The API contract for this version has not been published.
BREAKING_CHANGE_REQUIRES_VERSION400The change is breaking and requires publishing a new API version.
RESOURCE_NOT_FOUND404The resource slug does not exist in the project.
RECORD_NOT_FOUND404The record id does not exist or was deleted.
PROJECT_ARCHIVED503The project is currently archived by its owner.
PROJECT_PAUSED503The project is paused because the workspace plan no longer covers it.
VALIDATION_ERROR400The request body failed schema validation.
PAYLOAD_TOO_LARGE413The request body is larger than the size limit. Send fewer or smaller fields, or split the write across several requests.
RATE_LIMITED429The project has reached its monthly request limit.
STORAGE_LIMIT_REACHED413The project or workspace storage limit has been reached.
QUERY_TOO_BROAD413The filtered or searched result set is too large for ad-hoc filtering.
UNSUPPORTED_QUERY400This resource's data source cannot honour part of the query (a filter operator, a filter field, sort, or search). The error details name what it does support.
WRITE_NOT_SUPPORTED405This resource's data source does not implement this write. Read-only sources such as BigQuery accept GET only. The Allow header lists the methods that do work, and the error details name the writes the source does support.
INTERNAL_ERROR500EndpointOS could not complete the request.
{
  "error": {
    "code": "VALIDATION_ERROR",
    "message": "Field 'title' is required.",
    "details": {
      "field": "title"
    }
  }
}

Conventions

Rate limits

EndpointOS counts public API requests per project each month. When the project reaches its limit, the API returns 429 RATE_LIMITED.

Limit response429 RATE_LIMITED
{
  "error": {
    "code": "RATE_LIMITED",
    "message": "Monthly request limit exceeded.",
    "details": {
      "limit": 1000,
      "resetAt": "2026-06-01T00:00:00.000Z"
    }
  }
}

Validation policy

Unknown fields are rejected

EndpointOS rejects fields that are not defined on the resource schema. This keeps generated APIs predictable and prevents accidental writes to undeclared data.

Developer portal

Request API access

Want to call this API? Send the owner an access request. If approved, they'll issue you an API key and a private link to see your usage.

Request API access