Update a project

PATCH /api/v1/public/project

PATCH /api/v1/public/project

Partially update public project.

Operation ID: patch_api_v1_public_project.

Authentication

Choose a credential. Each row is an accepted alternative; access also depends on current roles, project bindings, and entitlements.

CredentialCarrierOAuth scopes
ServiceAccountBearerAuthAuthorization: BearerSee credential policy
OAuth2Authorization: Bearerproject:write

For OAuth and service-account credentials, send the selected project UUID in x-project-id, including when the header is optional for legacy keys.

Service-account tokens need the corresponding functional scopes listed for OAuth, as well as an active binding and role for the selected project.

Availability

This operation requires the public-api-mutations capability to be enabled for the deployment. Its presence in the contract does not guarantee availability. See operation availability.

Request parameters

NameLocationRequiredType / allowed valuesDescription / constraints
idempotency-keyheaderYesstringidempotency-key header parameter; Required canonical UUIDv4 or high-entropy base64url idempotency key; minLength: 22; maxLength: 43; Pattern constrained; see the downloadable schema.
x-project-idheaderYesstringx-project-id header parameter; format: uuid; Pattern constrained; see the downloadable schema.

Request body

Body required: yes.

application/json

FieldType / allowed valuesRequired in parentDescription / constraints
$objectYesadditionalProperties: false
namestringNominLength: 1; maxLength: 255
timezonestring | nullNo—
timezone (anyOf 1)stringYesmaxLength: 50

Request example

Replace placeholder IDs and environment variables with values from your authorized project. Credentials are expanded into curl's stdin configuration, not its command arguments. Keep shell tracing off and do not log this configuration. For requests with a body, put a payload matching the schema in request-body.txt; form requests use URL-encoded content.

curl --fail-with-body --silent --show-error --config - <<CURL_CONFIG
request = "PATCH"
header = "Authorization: Bearer ${NEATLOGS_TOKEN}"
header = "idempotency-key: ${IDEMPOTENCY_KEY}"
header = "x-project-id: ${NEATLOGS_PROJECT_ID}"
header = "Content-Type: application/json"
data-binary = "@request-body.txt"
url = "https://app.neatlogs.com/api/v1/public/project"
CURL_CONFIG

Responses

StatusDescriptionContent type
200Project updatedapplication/json
400Invalid public API requestapplication/problem+json
401Missing or invalid public API credentialapplication/problem+json
403Public API request is not authorizedapplication/problem+json
404Project not foundapplication/problem+json
409Public API request conflictapplication/problem+json
413Public API request body too largeapplication/problem+json
415Unsupported public API request bodyapplication/problem+json
429Public API rate limit exceededapplication/problem+json
500Internal server errorapplication/problem+json
503Public API credential, project context, or rate limiting unavailable. Backend is draining; retry after the Retry-After delay.application/problem+json, application/json

200 response fields

Content type: application/json.

FieldType / allowed valuesRequired in parentDescription / constraints
$objectYesadditionalProperties: false
dataobjectYesadditionalProperties: false
data.createdAtstringYesformat: date-time; Pattern constrained; see the downloadable schema.
data.idstringYesformat: uuid; Pattern constrained; see the downloadable schema.
data.isArchivedbooleanYes—
data.isDefaultbooleanYes—
data.namestringYesmaxLength: 255
data.orgIdstringYesformat: uuid; Pattern constrained; see the downloadable schema.
data.tierstringYesmaxLength: 50
data.timezonestring | nullYes—
data.timezone (anyOf 1)stringYesmaxLength: 50
data.updatedAtstringYesformat: date-time; Pattern constrained; see the downloadable schema.
requestIdstringYesPattern constrained; see the downloadable schema.
successtrueYes—

Response headers

HeaderDescription / constraints
RateLimit-LimitEffective request ceiling for the current window; minimum: 1
RateLimit-RemainingRequests remaining in the current window; minimum: 0
RateLimit-ResetUnix timestamp in seconds when the current window resets; minimum: 0
X-NeatLogs-RateLimit-DegradedWhether bounded emergency enforcement is active; —
X-NeatLogs-RateLimit-LimitEffective request ceiling for the current window; minimum: 1
X-NeatLogs-RateLimit-PolicyApplied pre-authentication or authenticated rate class; —
X-NeatLogs-RateLimit-RemainingRequests remaining in the current window; minimum: 0
X-NeatLogs-RateLimit-Reset-AfterWhole seconds until the current window resets; minimum: 1
X-NeatLogs-RateLimit-VersionNeatLogs rate-limit contract version; —
X-Request-IdServer-owned request correlation identifier; Pattern constrained; see the downloadable schema.

Failures use Problem Details. For exact validation patterns and all response schemas, download the OpenAPI specification.

On this page

Ask Neatlogs AI

Answers from the docs

How can I help?

Ask anything about instrumenting, tracing, or the Neatlogs dashboard.