EndpointOS/endpointos-demo/feature-requests-apipublic docs

Feature Requests API

liveOpenAPI 3.1

A demo hosted API for collecting and prioritizing product feedback.

Maintained by endpointos-demoUpdated May 12, 20261 resource1,000 requests/month
openapi.json
Introduction

A live REST API reference generated from Feature Requests API.

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/endpointos-demo/feature-requests-api/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/endpointos-demo/feature-requests-api

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

Feature request records available through the generated CRUD API.

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
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.
401UnauthorizedclientMissing or invalid API key.
429Rate limitedclientThe project reached its monthly request limit.
RequestGET /feature-requests
curl "https://endpointos.dev/api/public/endpointos-demo/feature-requests-api/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/endpointos-demo/feature-requests-api/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/endpointos-demo/feature-requests-api/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/endpointos-demo/feature-requests-api/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/endpointos-demo/feature-requests-api/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"
    }
  }
}

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

Collection endpoints accept field filters, comparison operators, text search, and deterministic sorting. Plain field=value remains an equality filter.

Filter controls
field=valuestringoptionalEquality filter for a defined field.
field[ne]stringoptionalExclude records matching this value.
field[in]stringoptionalComma-separated values for a field.
field[gte]stringoptionalComparison operators work with number, date, and datetime fields.
qstringoptionalSearch string and enum fields.
sortstringoptionalSort by a field, createdAt, or updatedAt.
Filtered requestGET
GET /feature-requests?status[in]=new,planned&votes[gte]=10&sort=-createdAt

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.
RESOURCE_NOT_FOUND404The resource slug does not exist in the project.
RECORD_NOT_FOUND404The record id does not exist or was deleted.
VALIDATION_ERROR400The request body failed schema validation.
RATE_LIMITED429The project has reached its monthly request limit.
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.

Feature Requests API Reference | EndpointOS