Introduce a project's terms of service (v1)
Creates the project's first terms document as version 1. This is the migration from "no terms" (v0): every human user of the project is emailed the LGPD art. 9 §6 change notice — the new content, the effective date (30 days out), the continued-use clause, and the account-termination path for those who disagree. Creating when terms already exist is a 409 — use `PUT` to update. The authenticated actor must be an admin or owner of the project.
/projects/{project_id}/terms-of-serviceCreates the project's first terms document as version 1. This is
the migration from "no terms" (v0): every human user of the
project is emailed the LGPD art. 9 §6 change notice — the new
content, the effective date (30 days out), the continued-use
clause, and the account-termination path for those who disagree.
Creating when terms already exist is a 409 — use PUT to update.
The authenticated actor must be an admin or owner of the project.
JWT issued by IdentityX, signed with Ed25519
In: header
Path Parameters
Project ID.
Request Body
application/json
TypeScript Definitions
Use the request body type in TypeScript.
Request body for introducing or updating a project's terms of service.
Response Body
application/json
application/problem+json
application/problem+json
application/problem+json
application/problem+json
application/problem+json
application/problem+json
application/problem+json
curl -X POST "https://example.com/projects/497f6eca-6276-4993-bfeb-53cbbbba6f08/terms-of-service" \ -H "Content-Type: application/json" \ -d '{ "content": "string" }'{
"id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
"project_id": "405d8375-3514-403b-8c43-83ae74cfe0e9",
"version": 1,
"content": "string",
"effective_at": "2019-08-24T14:15:22Z",
"created_at": "2019-08-24T14:15:22Z",
"updated_at": "2019-08-24T14:15:22Z"
}{
"detail": "string",
"instance": "../dictionary",
"errors": [
{
"field": "string",
"message": "string"
}
],
"type": "http://example.com",
"status": 400,
"title": "Validation Failed"
}{
"detail": "string",
"instance": "../dictionary",
"errors": [
{
"field": "string",
"message": "string"
}
],
"type": "http://example.com",
"status": 401,
"title": "Unauthenticated"
}{
"detail": "string",
"instance": "../dictionary",
"errors": [
{
"field": "string",
"message": "string"
}
],
"type": "http://example.com",
"status": 403,
"title": "Insufficient Role"
}{
"detail": "string",
"instance": "../dictionary",
"errors": [
{
"field": "string",
"message": "string"
}
],
"type": "http://example.com",
"status": 404,
"title": "Not Found"
}{
"detail": "string",
"instance": "../dictionary",
"errors": [
{
"field": "string",
"message": "string"
}
],
"type": "http://example.com",
"status": 409,
"title": "Setup Complete"
}{
"detail": "string",
"instance": "../dictionary",
"errors": [
{
"field": "string",
"message": "string"
}
],
"type": "http://example.com",
"status": 500,
"title": "Internal Server Error"
}{
"detail": "string",
"instance": "../dictionary",
"errors": [
{
"field": "string",
"message": "string"
}
],
"type": "http://example.com",
"status": 503,
"title": "Identity Unavailable"
}Get a project's current terms of service GET
Returns the project's current terms document, or 404 when the project has none (a project without terms requires no acceptance). Public: frontends render the document on signup and notice pages without authenticating.
Update a project's terms of service (bumps the version) PUT
Replaces the content and bumps the version; the effective date is reset to 30 days out. Every human user of the project is emailed the LGPD art. 9 §6 change notice for the new version. Updating a project without terms is a 404 — use `POST` to introduce them. The authenticated actor must be an admin or owner of the project.