83f83ab641
New /trees/[id]/sources page (list + create sources). Person-detail page now loads tree sources + citations and shows a '✓ N sourced' badge with an inline cite picker (source + page) on each event and on the person. Tree view links to Sources. Regenerated the OpenAPI client. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> Signed-off-by: Justin Paul <justin@jpaul.me>
2470 lines
59 KiB
JSON
2470 lines
59 KiB
JSON
{
|
|
"openapi": "3.1.0",
|
|
"info": {
|
|
"title": "Provenance",
|
|
"description": "Provenance API \u2014 family and land provenance.",
|
|
"version": "0.0.0"
|
|
},
|
|
"paths": {
|
|
"/health": {
|
|
"get": {
|
|
"tags": [
|
|
"health"
|
|
],
|
|
"summary": "Health",
|
|
"operationId": "health_health_get",
|
|
"responses": {
|
|
"200": {
|
|
"description": "Successful Response",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"additionalProperties": true,
|
|
"type": "object",
|
|
"title": "Response Health Health Get"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/health/ready": {
|
|
"get": {
|
|
"tags": [
|
|
"health"
|
|
],
|
|
"summary": "Ready",
|
|
"operationId": "ready_health_ready_get",
|
|
"responses": {
|
|
"200": {
|
|
"description": "Successful Response",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"additionalProperties": true,
|
|
"type": "object",
|
|
"title": "Response Ready Health Ready Get"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/api/v1/auth/register": {
|
|
"post": {
|
|
"tags": [
|
|
"auth"
|
|
],
|
|
"summary": "Register",
|
|
"operationId": "register_api_v1_auth_register_post",
|
|
"requestBody": {
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/RegisterRequest"
|
|
}
|
|
}
|
|
},
|
|
"required": true
|
|
},
|
|
"responses": {
|
|
"201": {
|
|
"description": "Successful Response",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/SessionRead"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"422": {
|
|
"description": "Validation Error",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/HTTPValidationError"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/api/v1/auth/login": {
|
|
"post": {
|
|
"tags": [
|
|
"auth"
|
|
],
|
|
"summary": "Login",
|
|
"operationId": "login_api_v1_auth_login_post",
|
|
"requestBody": {
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/LoginRequest"
|
|
}
|
|
}
|
|
},
|
|
"required": true
|
|
},
|
|
"responses": {
|
|
"200": {
|
|
"description": "Successful Response",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/SessionRead"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"422": {
|
|
"description": "Validation Error",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/HTTPValidationError"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/api/v1/auth/logout": {
|
|
"post": {
|
|
"tags": [
|
|
"auth"
|
|
],
|
|
"summary": "Logout",
|
|
"operationId": "logout_api_v1_auth_logout_post",
|
|
"responses": {
|
|
"204": {
|
|
"description": "Successful Response"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/api/v1/auth/verify-email": {
|
|
"post": {
|
|
"tags": [
|
|
"auth"
|
|
],
|
|
"summary": "Verify Email",
|
|
"operationId": "verify_email_api_v1_auth_verify_email_post",
|
|
"requestBody": {
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/TokenRequest"
|
|
}
|
|
}
|
|
},
|
|
"required": true
|
|
},
|
|
"responses": {
|
|
"204": {
|
|
"description": "Successful Response"
|
|
},
|
|
"422": {
|
|
"description": "Validation Error",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/HTTPValidationError"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/api/v1/auth/request-password-reset": {
|
|
"post": {
|
|
"tags": [
|
|
"auth"
|
|
],
|
|
"summary": "Request Password Reset",
|
|
"operationId": "request_password_reset_api_v1_auth_request_password_reset_post",
|
|
"requestBody": {
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/PasswordResetRequest"
|
|
}
|
|
}
|
|
},
|
|
"required": true
|
|
},
|
|
"responses": {
|
|
"202": {
|
|
"description": "Successful Response",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"additionalProperties": true,
|
|
"type": "object",
|
|
"title": "Response Request Password Reset Api V1 Auth Request Password Reset Post"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"422": {
|
|
"description": "Validation Error",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/HTTPValidationError"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/api/v1/auth/reset-password": {
|
|
"post": {
|
|
"tags": [
|
|
"auth"
|
|
],
|
|
"summary": "Reset Password",
|
|
"operationId": "reset_password_api_v1_auth_reset_password_post",
|
|
"requestBody": {
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/PasswordResetConfirm"
|
|
}
|
|
}
|
|
},
|
|
"required": true
|
|
},
|
|
"responses": {
|
|
"204": {
|
|
"description": "Successful Response"
|
|
},
|
|
"422": {
|
|
"description": "Validation Error",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/HTTPValidationError"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/api/v1/users/me": {
|
|
"get": {
|
|
"tags": [
|
|
"users"
|
|
],
|
|
"summary": "Read Me",
|
|
"operationId": "read_me_api_v1_users_me_get",
|
|
"responses": {
|
|
"200": {
|
|
"description": "Successful Response",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/UserRead"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/api/v1/trees": {
|
|
"get": {
|
|
"tags": [
|
|
"trees"
|
|
],
|
|
"summary": "List My Trees",
|
|
"operationId": "list_my_trees_api_v1_trees_get",
|
|
"responses": {
|
|
"200": {
|
|
"description": "Successful Response",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"items": {
|
|
"$ref": "#/components/schemas/TreeRead"
|
|
},
|
|
"type": "array",
|
|
"title": "Response List My Trees Api V1 Trees Get"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"post": {
|
|
"tags": [
|
|
"trees"
|
|
],
|
|
"summary": "Create Tree",
|
|
"operationId": "create_tree_api_v1_trees_post",
|
|
"requestBody": {
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/TreeCreate"
|
|
}
|
|
}
|
|
},
|
|
"required": true
|
|
},
|
|
"responses": {
|
|
"201": {
|
|
"description": "Successful Response",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/TreeRead"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"422": {
|
|
"description": "Validation Error",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/HTTPValidationError"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/api/v1/trees/{tree_id}": {
|
|
"get": {
|
|
"tags": [
|
|
"trees"
|
|
],
|
|
"summary": "Get Tree",
|
|
"operationId": "get_tree_api_v1_trees__tree_id__get",
|
|
"parameters": [
|
|
{
|
|
"name": "tree_id",
|
|
"in": "path",
|
|
"required": true,
|
|
"schema": {
|
|
"type": "string",
|
|
"format": "uuid",
|
|
"title": "Tree Id"
|
|
}
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "Successful Response",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/TreeRead"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"422": {
|
|
"description": "Validation Error",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/HTTPValidationError"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/api/v1/trees/{tree_id}/persons": {
|
|
"post": {
|
|
"tags": [
|
|
"persons"
|
|
],
|
|
"summary": "Create Person",
|
|
"operationId": "create_person_api_v1_trees__tree_id__persons_post",
|
|
"parameters": [
|
|
{
|
|
"name": "tree_id",
|
|
"in": "path",
|
|
"required": true,
|
|
"schema": {
|
|
"type": "string",
|
|
"format": "uuid",
|
|
"title": "Tree Id"
|
|
}
|
|
}
|
|
],
|
|
"requestBody": {
|
|
"required": true,
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/PersonCreate"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"responses": {
|
|
"201": {
|
|
"description": "Successful Response",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/PersonRead"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"422": {
|
|
"description": "Validation Error",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/HTTPValidationError"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"get": {
|
|
"tags": [
|
|
"persons"
|
|
],
|
|
"summary": "List Persons",
|
|
"operationId": "list_persons_api_v1_trees__tree_id__persons_get",
|
|
"parameters": [
|
|
{
|
|
"name": "tree_id",
|
|
"in": "path",
|
|
"required": true,
|
|
"schema": {
|
|
"type": "string",
|
|
"format": "uuid",
|
|
"title": "Tree Id"
|
|
}
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "Successful Response",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/components/schemas/PersonRead"
|
|
},
|
|
"title": "Response List Persons Api V1 Trees Tree Id Persons Get"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"422": {
|
|
"description": "Validation Error",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/HTTPValidationError"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/api/v1/trees/{tree_id}/persons/{person_id}": {
|
|
"get": {
|
|
"tags": [
|
|
"persons"
|
|
],
|
|
"summary": "Get Person",
|
|
"operationId": "get_person_api_v1_trees__tree_id__persons__person_id__get",
|
|
"parameters": [
|
|
{
|
|
"name": "tree_id",
|
|
"in": "path",
|
|
"required": true,
|
|
"schema": {
|
|
"type": "string",
|
|
"format": "uuid",
|
|
"title": "Tree Id"
|
|
}
|
|
},
|
|
{
|
|
"name": "person_id",
|
|
"in": "path",
|
|
"required": true,
|
|
"schema": {
|
|
"type": "string",
|
|
"format": "uuid",
|
|
"title": "Person Id"
|
|
}
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "Successful Response",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/PersonRead"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"422": {
|
|
"description": "Validation Error",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/HTTPValidationError"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/api/v1/trees/{tree_id}/events": {
|
|
"post": {
|
|
"tags": [
|
|
"events"
|
|
],
|
|
"summary": "Create Event",
|
|
"operationId": "create_event_api_v1_trees__tree_id__events_post",
|
|
"parameters": [
|
|
{
|
|
"name": "tree_id",
|
|
"in": "path",
|
|
"required": true,
|
|
"schema": {
|
|
"type": "string",
|
|
"format": "uuid",
|
|
"title": "Tree Id"
|
|
}
|
|
}
|
|
],
|
|
"requestBody": {
|
|
"required": true,
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/EventCreate"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"responses": {
|
|
"201": {
|
|
"description": "Successful Response",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/EventRead"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"422": {
|
|
"description": "Validation Error",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/HTTPValidationError"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/api/v1/trees/{tree_id}/persons/{person_id}/events": {
|
|
"get": {
|
|
"tags": [
|
|
"events"
|
|
],
|
|
"summary": "List Person Events",
|
|
"operationId": "list_person_events_api_v1_trees__tree_id__persons__person_id__events_get",
|
|
"parameters": [
|
|
{
|
|
"name": "tree_id",
|
|
"in": "path",
|
|
"required": true,
|
|
"schema": {
|
|
"type": "string",
|
|
"format": "uuid",
|
|
"title": "Tree Id"
|
|
}
|
|
},
|
|
{
|
|
"name": "person_id",
|
|
"in": "path",
|
|
"required": true,
|
|
"schema": {
|
|
"type": "string",
|
|
"format": "uuid",
|
|
"title": "Person Id"
|
|
}
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "Successful Response",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/components/schemas/EventRead"
|
|
},
|
|
"title": "Response List Person Events Api V1 Trees Tree Id Persons Person Id Events Get"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"422": {
|
|
"description": "Validation Error",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/HTTPValidationError"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/api/v1/trees/{tree_id}/events/{event_id}": {
|
|
"delete": {
|
|
"tags": [
|
|
"events"
|
|
],
|
|
"summary": "Delete Event",
|
|
"operationId": "delete_event_api_v1_trees__tree_id__events__event_id__delete",
|
|
"parameters": [
|
|
{
|
|
"name": "tree_id",
|
|
"in": "path",
|
|
"required": true,
|
|
"schema": {
|
|
"type": "string",
|
|
"format": "uuid",
|
|
"title": "Tree Id"
|
|
}
|
|
},
|
|
{
|
|
"name": "event_id",
|
|
"in": "path",
|
|
"required": true,
|
|
"schema": {
|
|
"type": "string",
|
|
"format": "uuid",
|
|
"title": "Event Id"
|
|
}
|
|
}
|
|
],
|
|
"responses": {
|
|
"204": {
|
|
"description": "Successful Response"
|
|
},
|
|
"422": {
|
|
"description": "Validation Error",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/HTTPValidationError"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/api/v1/trees/{tree_id}/relationships": {
|
|
"post": {
|
|
"tags": [
|
|
"relationships"
|
|
],
|
|
"summary": "Create Relationship",
|
|
"operationId": "create_relationship_api_v1_trees__tree_id__relationships_post",
|
|
"parameters": [
|
|
{
|
|
"name": "tree_id",
|
|
"in": "path",
|
|
"required": true,
|
|
"schema": {
|
|
"type": "string",
|
|
"format": "uuid",
|
|
"title": "Tree Id"
|
|
}
|
|
}
|
|
],
|
|
"requestBody": {
|
|
"required": true,
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/RelationshipCreate"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"responses": {
|
|
"201": {
|
|
"description": "Successful Response",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/RelationshipRead"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"422": {
|
|
"description": "Validation Error",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/HTTPValidationError"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/api/v1/trees/{tree_id}/persons/{person_id}/relationships": {
|
|
"get": {
|
|
"tags": [
|
|
"relationships"
|
|
],
|
|
"summary": "List Person Relationships",
|
|
"operationId": "list_person_relationships_api_v1_trees__tree_id__persons__person_id__relationships_get",
|
|
"parameters": [
|
|
{
|
|
"name": "tree_id",
|
|
"in": "path",
|
|
"required": true,
|
|
"schema": {
|
|
"type": "string",
|
|
"format": "uuid",
|
|
"title": "Tree Id"
|
|
}
|
|
},
|
|
{
|
|
"name": "person_id",
|
|
"in": "path",
|
|
"required": true,
|
|
"schema": {
|
|
"type": "string",
|
|
"format": "uuid",
|
|
"title": "Person Id"
|
|
}
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "Successful Response",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/components/schemas/RelationshipRead"
|
|
},
|
|
"title": "Response List Person Relationships Api V1 Trees Tree Id Persons Person Id Relationships Get"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"422": {
|
|
"description": "Validation Error",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/HTTPValidationError"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/api/v1/trees/{tree_id}/relationships/{relationship_id}": {
|
|
"delete": {
|
|
"tags": [
|
|
"relationships"
|
|
],
|
|
"summary": "Delete Relationship",
|
|
"operationId": "delete_relationship_api_v1_trees__tree_id__relationships__relationship_id__delete",
|
|
"parameters": [
|
|
{
|
|
"name": "tree_id",
|
|
"in": "path",
|
|
"required": true,
|
|
"schema": {
|
|
"type": "string",
|
|
"format": "uuid",
|
|
"title": "Tree Id"
|
|
}
|
|
},
|
|
{
|
|
"name": "relationship_id",
|
|
"in": "path",
|
|
"required": true,
|
|
"schema": {
|
|
"type": "string",
|
|
"format": "uuid",
|
|
"title": "Relationship Id"
|
|
}
|
|
}
|
|
],
|
|
"responses": {
|
|
"204": {
|
|
"description": "Successful Response"
|
|
},
|
|
"422": {
|
|
"description": "Validation Error",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/HTTPValidationError"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/api/v1/trees/{tree_id}/sources": {
|
|
"post": {
|
|
"tags": [
|
|
"sources"
|
|
],
|
|
"summary": "Create Source",
|
|
"operationId": "create_source_api_v1_trees__tree_id__sources_post",
|
|
"parameters": [
|
|
{
|
|
"name": "tree_id",
|
|
"in": "path",
|
|
"required": true,
|
|
"schema": {
|
|
"type": "string",
|
|
"format": "uuid",
|
|
"title": "Tree Id"
|
|
}
|
|
}
|
|
],
|
|
"requestBody": {
|
|
"required": true,
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/SourceCreate"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"responses": {
|
|
"201": {
|
|
"description": "Successful Response",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/SourceRead"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"422": {
|
|
"description": "Validation Error",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/HTTPValidationError"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"get": {
|
|
"tags": [
|
|
"sources"
|
|
],
|
|
"summary": "List Sources",
|
|
"operationId": "list_sources_api_v1_trees__tree_id__sources_get",
|
|
"parameters": [
|
|
{
|
|
"name": "tree_id",
|
|
"in": "path",
|
|
"required": true,
|
|
"schema": {
|
|
"type": "string",
|
|
"format": "uuid",
|
|
"title": "Tree Id"
|
|
}
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "Successful Response",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/components/schemas/SourceRead"
|
|
},
|
|
"title": "Response List Sources Api V1 Trees Tree Id Sources Get"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"422": {
|
|
"description": "Validation Error",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/HTTPValidationError"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/api/v1/trees/{tree_id}/sources/{source_id}": {
|
|
"get": {
|
|
"tags": [
|
|
"sources"
|
|
],
|
|
"summary": "Get Source",
|
|
"operationId": "get_source_api_v1_trees__tree_id__sources__source_id__get",
|
|
"parameters": [
|
|
{
|
|
"name": "tree_id",
|
|
"in": "path",
|
|
"required": true,
|
|
"schema": {
|
|
"type": "string",
|
|
"format": "uuid",
|
|
"title": "Tree Id"
|
|
}
|
|
},
|
|
{
|
|
"name": "source_id",
|
|
"in": "path",
|
|
"required": true,
|
|
"schema": {
|
|
"type": "string",
|
|
"format": "uuid",
|
|
"title": "Source Id"
|
|
}
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "Successful Response",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/SourceRead"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"422": {
|
|
"description": "Validation Error",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/HTTPValidationError"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"delete": {
|
|
"tags": [
|
|
"sources"
|
|
],
|
|
"summary": "Delete Source",
|
|
"operationId": "delete_source_api_v1_trees__tree_id__sources__source_id__delete",
|
|
"parameters": [
|
|
{
|
|
"name": "tree_id",
|
|
"in": "path",
|
|
"required": true,
|
|
"schema": {
|
|
"type": "string",
|
|
"format": "uuid",
|
|
"title": "Tree Id"
|
|
}
|
|
},
|
|
{
|
|
"name": "source_id",
|
|
"in": "path",
|
|
"required": true,
|
|
"schema": {
|
|
"type": "string",
|
|
"format": "uuid",
|
|
"title": "Source Id"
|
|
}
|
|
}
|
|
],
|
|
"responses": {
|
|
"204": {
|
|
"description": "Successful Response"
|
|
},
|
|
"422": {
|
|
"description": "Validation Error",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/HTTPValidationError"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/api/v1/trees/{tree_id}/citations": {
|
|
"post": {
|
|
"tags": [
|
|
"citations"
|
|
],
|
|
"summary": "Create Citation",
|
|
"operationId": "create_citation_api_v1_trees__tree_id__citations_post",
|
|
"parameters": [
|
|
{
|
|
"name": "tree_id",
|
|
"in": "path",
|
|
"required": true,
|
|
"schema": {
|
|
"type": "string",
|
|
"format": "uuid",
|
|
"title": "Tree Id"
|
|
}
|
|
}
|
|
],
|
|
"requestBody": {
|
|
"required": true,
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/CitationCreate"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"responses": {
|
|
"201": {
|
|
"description": "Successful Response",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/CitationRead"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"422": {
|
|
"description": "Validation Error",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/HTTPValidationError"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"get": {
|
|
"tags": [
|
|
"citations"
|
|
],
|
|
"summary": "List Citations",
|
|
"operationId": "list_citations_api_v1_trees__tree_id__citations_get",
|
|
"parameters": [
|
|
{
|
|
"name": "tree_id",
|
|
"in": "path",
|
|
"required": true,
|
|
"schema": {
|
|
"type": "string",
|
|
"format": "uuid",
|
|
"title": "Tree Id"
|
|
}
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "Successful Response",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/components/schemas/CitationRead"
|
|
},
|
|
"title": "Response List Citations Api V1 Trees Tree Id Citations Get"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"422": {
|
|
"description": "Validation Error",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/HTTPValidationError"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/api/v1/trees/{tree_id}/citations/{citation_id}": {
|
|
"delete": {
|
|
"tags": [
|
|
"citations"
|
|
],
|
|
"summary": "Delete Citation",
|
|
"operationId": "delete_citation_api_v1_trees__tree_id__citations__citation_id__delete",
|
|
"parameters": [
|
|
{
|
|
"name": "tree_id",
|
|
"in": "path",
|
|
"required": true,
|
|
"schema": {
|
|
"type": "string",
|
|
"format": "uuid",
|
|
"title": "Tree Id"
|
|
}
|
|
},
|
|
{
|
|
"name": "citation_id",
|
|
"in": "path",
|
|
"required": true,
|
|
"schema": {
|
|
"type": "string",
|
|
"format": "uuid",
|
|
"title": "Citation Id"
|
|
}
|
|
}
|
|
],
|
|
"responses": {
|
|
"204": {
|
|
"description": "Successful Response"
|
|
},
|
|
"422": {
|
|
"description": "Validation Error",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/HTTPValidationError"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"components": {
|
|
"schemas": {
|
|
"CitationConfidence": {
|
|
"type": "string",
|
|
"enum": [
|
|
"high",
|
|
"medium",
|
|
"low"
|
|
],
|
|
"title": "CitationConfidence"
|
|
},
|
|
"CitationCreate": {
|
|
"properties": {
|
|
"source_id": {
|
|
"type": "string",
|
|
"format": "uuid",
|
|
"title": "Source Id"
|
|
},
|
|
"person_id": {
|
|
"anyOf": [
|
|
{
|
|
"type": "string",
|
|
"format": "uuid"
|
|
},
|
|
{
|
|
"type": "null"
|
|
}
|
|
],
|
|
"title": "Person Id"
|
|
},
|
|
"event_id": {
|
|
"anyOf": [
|
|
{
|
|
"type": "string",
|
|
"format": "uuid"
|
|
},
|
|
{
|
|
"type": "null"
|
|
}
|
|
],
|
|
"title": "Event Id"
|
|
},
|
|
"name_id": {
|
|
"anyOf": [
|
|
{
|
|
"type": "string",
|
|
"format": "uuid"
|
|
},
|
|
{
|
|
"type": "null"
|
|
}
|
|
],
|
|
"title": "Name Id"
|
|
},
|
|
"relationship_id": {
|
|
"anyOf": [
|
|
{
|
|
"type": "string",
|
|
"format": "uuid"
|
|
},
|
|
{
|
|
"type": "null"
|
|
}
|
|
],
|
|
"title": "Relationship Id"
|
|
},
|
|
"page": {
|
|
"anyOf": [
|
|
{
|
|
"type": "string"
|
|
},
|
|
{
|
|
"type": "null"
|
|
}
|
|
],
|
|
"title": "Page"
|
|
},
|
|
"detail": {
|
|
"anyOf": [
|
|
{
|
|
"type": "string"
|
|
},
|
|
{
|
|
"type": "null"
|
|
}
|
|
],
|
|
"title": "Detail"
|
|
},
|
|
"confidence": {
|
|
"anyOf": [
|
|
{
|
|
"$ref": "#/components/schemas/CitationConfidence"
|
|
},
|
|
{
|
|
"type": "null"
|
|
}
|
|
]
|
|
}
|
|
},
|
|
"type": "object",
|
|
"required": [
|
|
"source_id"
|
|
],
|
|
"title": "CitationCreate"
|
|
},
|
|
"CitationRead": {
|
|
"properties": {
|
|
"id": {
|
|
"type": "string",
|
|
"format": "uuid",
|
|
"title": "Id"
|
|
},
|
|
"tree_id": {
|
|
"type": "string",
|
|
"format": "uuid",
|
|
"title": "Tree Id"
|
|
},
|
|
"source_id": {
|
|
"type": "string",
|
|
"format": "uuid",
|
|
"title": "Source Id"
|
|
},
|
|
"person_id": {
|
|
"anyOf": [
|
|
{
|
|
"type": "string",
|
|
"format": "uuid"
|
|
},
|
|
{
|
|
"type": "null"
|
|
}
|
|
],
|
|
"title": "Person Id"
|
|
},
|
|
"event_id": {
|
|
"anyOf": [
|
|
{
|
|
"type": "string",
|
|
"format": "uuid"
|
|
},
|
|
{
|
|
"type": "null"
|
|
}
|
|
],
|
|
"title": "Event Id"
|
|
},
|
|
"name_id": {
|
|
"anyOf": [
|
|
{
|
|
"type": "string",
|
|
"format": "uuid"
|
|
},
|
|
{
|
|
"type": "null"
|
|
}
|
|
],
|
|
"title": "Name Id"
|
|
},
|
|
"relationship_id": {
|
|
"anyOf": [
|
|
{
|
|
"type": "string",
|
|
"format": "uuid"
|
|
},
|
|
{
|
|
"type": "null"
|
|
}
|
|
],
|
|
"title": "Relationship Id"
|
|
},
|
|
"page": {
|
|
"anyOf": [
|
|
{
|
|
"type": "string"
|
|
},
|
|
{
|
|
"type": "null"
|
|
}
|
|
],
|
|
"title": "Page"
|
|
},
|
|
"detail": {
|
|
"anyOf": [
|
|
{
|
|
"type": "string"
|
|
},
|
|
{
|
|
"type": "null"
|
|
}
|
|
],
|
|
"title": "Detail"
|
|
},
|
|
"confidence": {
|
|
"anyOf": [
|
|
{
|
|
"$ref": "#/components/schemas/CitationConfidence"
|
|
},
|
|
{
|
|
"type": "null"
|
|
}
|
|
]
|
|
},
|
|
"created_at": {
|
|
"type": "string",
|
|
"format": "date-time",
|
|
"title": "Created At"
|
|
}
|
|
},
|
|
"type": "object",
|
|
"required": [
|
|
"id",
|
|
"tree_id",
|
|
"source_id",
|
|
"person_id",
|
|
"event_id",
|
|
"name_id",
|
|
"relationship_id",
|
|
"page",
|
|
"detail",
|
|
"confidence",
|
|
"created_at"
|
|
],
|
|
"title": "CitationRead"
|
|
},
|
|
"EventCreate": {
|
|
"properties": {
|
|
"event_type": {
|
|
"type": "string",
|
|
"title": "Event Type"
|
|
},
|
|
"person_id": {
|
|
"anyOf": [
|
|
{
|
|
"type": "string",
|
|
"format": "uuid"
|
|
},
|
|
{
|
|
"type": "null"
|
|
}
|
|
],
|
|
"title": "Person Id"
|
|
},
|
|
"relationship_id": {
|
|
"anyOf": [
|
|
{
|
|
"type": "string",
|
|
"format": "uuid"
|
|
},
|
|
{
|
|
"type": "null"
|
|
}
|
|
],
|
|
"title": "Relationship Id"
|
|
},
|
|
"place_id": {
|
|
"anyOf": [
|
|
{
|
|
"type": "string",
|
|
"format": "uuid"
|
|
},
|
|
{
|
|
"type": "null"
|
|
}
|
|
],
|
|
"title": "Place Id"
|
|
},
|
|
"date_value": {
|
|
"anyOf": [
|
|
{
|
|
"type": "string"
|
|
},
|
|
{
|
|
"type": "null"
|
|
}
|
|
],
|
|
"title": "Date Value"
|
|
},
|
|
"date_start": {
|
|
"anyOf": [
|
|
{
|
|
"type": "string",
|
|
"format": "date"
|
|
},
|
|
{
|
|
"type": "null"
|
|
}
|
|
],
|
|
"title": "Date Start"
|
|
},
|
|
"date_end": {
|
|
"anyOf": [
|
|
{
|
|
"type": "string",
|
|
"format": "date"
|
|
},
|
|
{
|
|
"type": "null"
|
|
}
|
|
],
|
|
"title": "Date End"
|
|
},
|
|
"date_precision": {
|
|
"anyOf": [
|
|
{
|
|
"type": "string"
|
|
},
|
|
{
|
|
"type": "null"
|
|
}
|
|
],
|
|
"title": "Date Precision"
|
|
},
|
|
"calendar": {
|
|
"type": "string",
|
|
"title": "Calendar",
|
|
"default": "gregorian"
|
|
},
|
|
"detail": {
|
|
"anyOf": [
|
|
{
|
|
"type": "string"
|
|
},
|
|
{
|
|
"type": "null"
|
|
}
|
|
],
|
|
"title": "Detail"
|
|
},
|
|
"notes": {
|
|
"anyOf": [
|
|
{
|
|
"type": "string"
|
|
},
|
|
{
|
|
"type": "null"
|
|
}
|
|
],
|
|
"title": "Notes"
|
|
}
|
|
},
|
|
"type": "object",
|
|
"required": [
|
|
"event_type"
|
|
],
|
|
"title": "EventCreate"
|
|
},
|
|
"EventRead": {
|
|
"properties": {
|
|
"id": {
|
|
"type": "string",
|
|
"format": "uuid",
|
|
"title": "Id"
|
|
},
|
|
"tree_id": {
|
|
"type": "string",
|
|
"format": "uuid",
|
|
"title": "Tree Id"
|
|
},
|
|
"event_type": {
|
|
"type": "string",
|
|
"title": "Event Type"
|
|
},
|
|
"person_id": {
|
|
"anyOf": [
|
|
{
|
|
"type": "string",
|
|
"format": "uuid"
|
|
},
|
|
{
|
|
"type": "null"
|
|
}
|
|
],
|
|
"title": "Person Id"
|
|
},
|
|
"relationship_id": {
|
|
"anyOf": [
|
|
{
|
|
"type": "string",
|
|
"format": "uuid"
|
|
},
|
|
{
|
|
"type": "null"
|
|
}
|
|
],
|
|
"title": "Relationship Id"
|
|
},
|
|
"place_id": {
|
|
"anyOf": [
|
|
{
|
|
"type": "string",
|
|
"format": "uuid"
|
|
},
|
|
{
|
|
"type": "null"
|
|
}
|
|
],
|
|
"title": "Place Id"
|
|
},
|
|
"date_value": {
|
|
"anyOf": [
|
|
{
|
|
"type": "string"
|
|
},
|
|
{
|
|
"type": "null"
|
|
}
|
|
],
|
|
"title": "Date Value"
|
|
},
|
|
"date_start": {
|
|
"anyOf": [
|
|
{
|
|
"type": "string",
|
|
"format": "date"
|
|
},
|
|
{
|
|
"type": "null"
|
|
}
|
|
],
|
|
"title": "Date Start"
|
|
},
|
|
"date_end": {
|
|
"anyOf": [
|
|
{
|
|
"type": "string",
|
|
"format": "date"
|
|
},
|
|
{
|
|
"type": "null"
|
|
}
|
|
],
|
|
"title": "Date End"
|
|
},
|
|
"date_precision": {
|
|
"anyOf": [
|
|
{
|
|
"type": "string"
|
|
},
|
|
{
|
|
"type": "null"
|
|
}
|
|
],
|
|
"title": "Date Precision"
|
|
},
|
|
"calendar": {
|
|
"type": "string",
|
|
"title": "Calendar"
|
|
},
|
|
"detail": {
|
|
"anyOf": [
|
|
{
|
|
"type": "string"
|
|
},
|
|
{
|
|
"type": "null"
|
|
}
|
|
],
|
|
"title": "Detail"
|
|
},
|
|
"notes": {
|
|
"anyOf": [
|
|
{
|
|
"type": "string"
|
|
},
|
|
{
|
|
"type": "null"
|
|
}
|
|
],
|
|
"title": "Notes"
|
|
},
|
|
"created_at": {
|
|
"type": "string",
|
|
"format": "date-time",
|
|
"title": "Created At"
|
|
}
|
|
},
|
|
"type": "object",
|
|
"required": [
|
|
"id",
|
|
"tree_id",
|
|
"event_type",
|
|
"person_id",
|
|
"relationship_id",
|
|
"place_id",
|
|
"date_value",
|
|
"date_start",
|
|
"date_end",
|
|
"date_precision",
|
|
"calendar",
|
|
"detail",
|
|
"notes",
|
|
"created_at"
|
|
],
|
|
"title": "EventRead"
|
|
},
|
|
"HTTPValidationError": {
|
|
"properties": {
|
|
"detail": {
|
|
"items": {
|
|
"$ref": "#/components/schemas/ValidationError"
|
|
},
|
|
"type": "array",
|
|
"title": "Detail"
|
|
}
|
|
},
|
|
"type": "object",
|
|
"title": "HTTPValidationError"
|
|
},
|
|
"LoginRequest": {
|
|
"properties": {
|
|
"email": {
|
|
"type": "string",
|
|
"title": "Email"
|
|
},
|
|
"password": {
|
|
"type": "string",
|
|
"title": "Password"
|
|
}
|
|
},
|
|
"type": "object",
|
|
"required": [
|
|
"email",
|
|
"password"
|
|
],
|
|
"title": "LoginRequest"
|
|
},
|
|
"ParentChildQualifier": {
|
|
"type": "string",
|
|
"enum": [
|
|
"biological",
|
|
"adoptive",
|
|
"step",
|
|
"foster",
|
|
"donor",
|
|
"guardian"
|
|
],
|
|
"title": "ParentChildQualifier",
|
|
"description": "Qualifies a parent_child edge so adoption/donor/blended families are\nfirst-class rather than edge cases (ARCHITECTURE \u00a75)."
|
|
},
|
|
"PasswordResetConfirm": {
|
|
"properties": {
|
|
"token": {
|
|
"type": "string",
|
|
"title": "Token"
|
|
},
|
|
"new_password": {
|
|
"type": "string",
|
|
"minLength": 8,
|
|
"title": "New Password"
|
|
}
|
|
},
|
|
"type": "object",
|
|
"required": [
|
|
"token",
|
|
"new_password"
|
|
],
|
|
"title": "PasswordResetConfirm"
|
|
},
|
|
"PasswordResetRequest": {
|
|
"properties": {
|
|
"email": {
|
|
"type": "string",
|
|
"title": "Email"
|
|
}
|
|
},
|
|
"type": "object",
|
|
"required": [
|
|
"email"
|
|
],
|
|
"title": "PasswordResetRequest"
|
|
},
|
|
"PersonCreate": {
|
|
"properties": {
|
|
"given": {
|
|
"anyOf": [
|
|
{
|
|
"type": "string"
|
|
},
|
|
{
|
|
"type": "null"
|
|
}
|
|
],
|
|
"title": "Given"
|
|
},
|
|
"surname": {
|
|
"anyOf": [
|
|
{
|
|
"type": "string"
|
|
},
|
|
{
|
|
"type": "null"
|
|
}
|
|
],
|
|
"title": "Surname"
|
|
},
|
|
"gender": {
|
|
"anyOf": [
|
|
{
|
|
"type": "string"
|
|
},
|
|
{
|
|
"type": "null"
|
|
}
|
|
],
|
|
"title": "Gender"
|
|
},
|
|
"is_living": {
|
|
"anyOf": [
|
|
{
|
|
"type": "boolean"
|
|
},
|
|
{
|
|
"type": "null"
|
|
}
|
|
],
|
|
"title": "Is Living"
|
|
},
|
|
"privacy": {
|
|
"$ref": "#/components/schemas/PersonPrivacy",
|
|
"default": "inherit"
|
|
},
|
|
"notes": {
|
|
"anyOf": [
|
|
{
|
|
"type": "string"
|
|
},
|
|
{
|
|
"type": "null"
|
|
}
|
|
],
|
|
"title": "Notes"
|
|
}
|
|
},
|
|
"type": "object",
|
|
"title": "PersonCreate"
|
|
},
|
|
"PersonPrivacy": {
|
|
"type": "string",
|
|
"enum": [
|
|
"inherit",
|
|
"private",
|
|
"public"
|
|
],
|
|
"title": "PersonPrivacy",
|
|
"description": "Per-person override of the tree's visibility (PRD US-041)."
|
|
},
|
|
"PersonRead": {
|
|
"properties": {
|
|
"id": {
|
|
"type": "string",
|
|
"format": "uuid",
|
|
"title": "Id"
|
|
},
|
|
"tree_id": {
|
|
"type": "string",
|
|
"format": "uuid",
|
|
"title": "Tree Id"
|
|
},
|
|
"primary_name": {
|
|
"anyOf": [
|
|
{
|
|
"type": "string"
|
|
},
|
|
{
|
|
"type": "null"
|
|
}
|
|
],
|
|
"title": "Primary Name"
|
|
},
|
|
"gender": {
|
|
"anyOf": [
|
|
{
|
|
"type": "string"
|
|
},
|
|
{
|
|
"type": "null"
|
|
}
|
|
],
|
|
"title": "Gender"
|
|
},
|
|
"is_living": {
|
|
"anyOf": [
|
|
{
|
|
"type": "boolean"
|
|
},
|
|
{
|
|
"type": "null"
|
|
}
|
|
],
|
|
"title": "Is Living"
|
|
},
|
|
"privacy": {
|
|
"$ref": "#/components/schemas/PersonPrivacy"
|
|
},
|
|
"created_at": {
|
|
"type": "string",
|
|
"format": "date-time",
|
|
"title": "Created At"
|
|
}
|
|
},
|
|
"type": "object",
|
|
"required": [
|
|
"id",
|
|
"tree_id",
|
|
"gender",
|
|
"is_living",
|
|
"privacy",
|
|
"created_at"
|
|
],
|
|
"title": "PersonRead"
|
|
},
|
|
"RegisterRequest": {
|
|
"properties": {
|
|
"email": {
|
|
"type": "string",
|
|
"title": "Email"
|
|
},
|
|
"password": {
|
|
"type": "string",
|
|
"minLength": 8,
|
|
"title": "Password"
|
|
},
|
|
"display_name": {
|
|
"anyOf": [
|
|
{
|
|
"type": "string"
|
|
},
|
|
{
|
|
"type": "null"
|
|
}
|
|
],
|
|
"title": "Display Name"
|
|
}
|
|
},
|
|
"type": "object",
|
|
"required": [
|
|
"email",
|
|
"password"
|
|
],
|
|
"title": "RegisterRequest"
|
|
},
|
|
"RelationshipCreate": {
|
|
"properties": {
|
|
"type": {
|
|
"$ref": "#/components/schemas/RelationshipType"
|
|
},
|
|
"person_from_id": {
|
|
"type": "string",
|
|
"format": "uuid",
|
|
"title": "Person From Id"
|
|
},
|
|
"person_to_id": {
|
|
"type": "string",
|
|
"format": "uuid",
|
|
"title": "Person To Id"
|
|
},
|
|
"qualifier": {
|
|
"anyOf": [
|
|
{
|
|
"$ref": "#/components/schemas/ParentChildQualifier"
|
|
},
|
|
{
|
|
"type": "null"
|
|
}
|
|
]
|
|
},
|
|
"notes": {
|
|
"anyOf": [
|
|
{
|
|
"type": "string"
|
|
},
|
|
{
|
|
"type": "null"
|
|
}
|
|
],
|
|
"title": "Notes"
|
|
}
|
|
},
|
|
"type": "object",
|
|
"required": [
|
|
"type",
|
|
"person_from_id",
|
|
"person_to_id"
|
|
],
|
|
"title": "RelationshipCreate"
|
|
},
|
|
"RelationshipRead": {
|
|
"properties": {
|
|
"id": {
|
|
"type": "string",
|
|
"format": "uuid",
|
|
"title": "Id"
|
|
},
|
|
"tree_id": {
|
|
"type": "string",
|
|
"format": "uuid",
|
|
"title": "Tree Id"
|
|
},
|
|
"type": {
|
|
"$ref": "#/components/schemas/RelationshipType"
|
|
},
|
|
"person_from_id": {
|
|
"type": "string",
|
|
"format": "uuid",
|
|
"title": "Person From Id"
|
|
},
|
|
"person_to_id": {
|
|
"type": "string",
|
|
"format": "uuid",
|
|
"title": "Person To Id"
|
|
},
|
|
"qualifier": {
|
|
"anyOf": [
|
|
{
|
|
"$ref": "#/components/schemas/ParentChildQualifier"
|
|
},
|
|
{
|
|
"type": "null"
|
|
}
|
|
]
|
|
},
|
|
"notes": {
|
|
"anyOf": [
|
|
{
|
|
"type": "string"
|
|
},
|
|
{
|
|
"type": "null"
|
|
}
|
|
],
|
|
"title": "Notes"
|
|
},
|
|
"created_at": {
|
|
"type": "string",
|
|
"format": "date-time",
|
|
"title": "Created At"
|
|
}
|
|
},
|
|
"type": "object",
|
|
"required": [
|
|
"id",
|
|
"tree_id",
|
|
"type",
|
|
"person_from_id",
|
|
"person_to_id",
|
|
"qualifier",
|
|
"notes",
|
|
"created_at"
|
|
],
|
|
"title": "RelationshipRead"
|
|
},
|
|
"RelationshipType": {
|
|
"type": "string",
|
|
"enum": [
|
|
"parent_child",
|
|
"partnership",
|
|
"sibling"
|
|
],
|
|
"title": "RelationshipType"
|
|
},
|
|
"SessionRead": {
|
|
"properties": {
|
|
"user": {
|
|
"$ref": "#/components/schemas/UserRead"
|
|
},
|
|
"token": {
|
|
"type": "string",
|
|
"title": "Token"
|
|
},
|
|
"expires_at": {
|
|
"type": "string",
|
|
"format": "date-time",
|
|
"title": "Expires At"
|
|
}
|
|
},
|
|
"type": "object",
|
|
"required": [
|
|
"user",
|
|
"token",
|
|
"expires_at"
|
|
],
|
|
"title": "SessionRead"
|
|
},
|
|
"SourceCreate": {
|
|
"properties": {
|
|
"title": {
|
|
"type": "string",
|
|
"title": "Title"
|
|
},
|
|
"author": {
|
|
"anyOf": [
|
|
{
|
|
"type": "string"
|
|
},
|
|
{
|
|
"type": "null"
|
|
}
|
|
],
|
|
"title": "Author"
|
|
},
|
|
"source_type": {
|
|
"anyOf": [
|
|
{
|
|
"type": "string"
|
|
},
|
|
{
|
|
"type": "null"
|
|
}
|
|
],
|
|
"title": "Source Type"
|
|
},
|
|
"repository": {
|
|
"anyOf": [
|
|
{
|
|
"type": "string"
|
|
},
|
|
{
|
|
"type": "null"
|
|
}
|
|
],
|
|
"title": "Repository"
|
|
},
|
|
"url": {
|
|
"anyOf": [
|
|
{
|
|
"type": "string"
|
|
},
|
|
{
|
|
"type": "null"
|
|
}
|
|
],
|
|
"title": "Url"
|
|
},
|
|
"citation_text": {
|
|
"anyOf": [
|
|
{
|
|
"type": "string"
|
|
},
|
|
{
|
|
"type": "null"
|
|
}
|
|
],
|
|
"title": "Citation Text"
|
|
},
|
|
"publication_info": {
|
|
"anyOf": [
|
|
{
|
|
"type": "string"
|
|
},
|
|
{
|
|
"type": "null"
|
|
}
|
|
],
|
|
"title": "Publication Info"
|
|
},
|
|
"quality_note": {
|
|
"anyOf": [
|
|
{
|
|
"type": "string"
|
|
},
|
|
{
|
|
"type": "null"
|
|
}
|
|
],
|
|
"title": "Quality Note"
|
|
}
|
|
},
|
|
"type": "object",
|
|
"required": [
|
|
"title"
|
|
],
|
|
"title": "SourceCreate"
|
|
},
|
|
"SourceRead": {
|
|
"properties": {
|
|
"id": {
|
|
"type": "string",
|
|
"format": "uuid",
|
|
"title": "Id"
|
|
},
|
|
"tree_id": {
|
|
"type": "string",
|
|
"format": "uuid",
|
|
"title": "Tree Id"
|
|
},
|
|
"title": {
|
|
"type": "string",
|
|
"title": "Title"
|
|
},
|
|
"author": {
|
|
"anyOf": [
|
|
{
|
|
"type": "string"
|
|
},
|
|
{
|
|
"type": "null"
|
|
}
|
|
],
|
|
"title": "Author"
|
|
},
|
|
"source_type": {
|
|
"anyOf": [
|
|
{
|
|
"type": "string"
|
|
},
|
|
{
|
|
"type": "null"
|
|
}
|
|
],
|
|
"title": "Source Type"
|
|
},
|
|
"repository": {
|
|
"anyOf": [
|
|
{
|
|
"type": "string"
|
|
},
|
|
{
|
|
"type": "null"
|
|
}
|
|
],
|
|
"title": "Repository"
|
|
},
|
|
"url": {
|
|
"anyOf": [
|
|
{
|
|
"type": "string"
|
|
},
|
|
{
|
|
"type": "null"
|
|
}
|
|
],
|
|
"title": "Url"
|
|
},
|
|
"citation_text": {
|
|
"anyOf": [
|
|
{
|
|
"type": "string"
|
|
},
|
|
{
|
|
"type": "null"
|
|
}
|
|
],
|
|
"title": "Citation Text"
|
|
},
|
|
"publication_info": {
|
|
"anyOf": [
|
|
{
|
|
"type": "string"
|
|
},
|
|
{
|
|
"type": "null"
|
|
}
|
|
],
|
|
"title": "Publication Info"
|
|
},
|
|
"quality_note": {
|
|
"anyOf": [
|
|
{
|
|
"type": "string"
|
|
},
|
|
{
|
|
"type": "null"
|
|
}
|
|
],
|
|
"title": "Quality Note"
|
|
},
|
|
"created_at": {
|
|
"type": "string",
|
|
"format": "date-time",
|
|
"title": "Created At"
|
|
}
|
|
},
|
|
"type": "object",
|
|
"required": [
|
|
"id",
|
|
"tree_id",
|
|
"title",
|
|
"author",
|
|
"source_type",
|
|
"repository",
|
|
"url",
|
|
"citation_text",
|
|
"publication_info",
|
|
"quality_note",
|
|
"created_at"
|
|
],
|
|
"title": "SourceRead"
|
|
},
|
|
"TokenRequest": {
|
|
"properties": {
|
|
"token": {
|
|
"type": "string",
|
|
"title": "Token"
|
|
}
|
|
},
|
|
"type": "object",
|
|
"required": [
|
|
"token"
|
|
],
|
|
"title": "TokenRequest"
|
|
},
|
|
"TreeCreate": {
|
|
"properties": {
|
|
"name": {
|
|
"type": "string",
|
|
"title": "Name"
|
|
},
|
|
"description": {
|
|
"anyOf": [
|
|
{
|
|
"type": "string"
|
|
},
|
|
{
|
|
"type": "null"
|
|
}
|
|
],
|
|
"title": "Description"
|
|
},
|
|
"visibility": {
|
|
"$ref": "#/components/schemas/TreeVisibility",
|
|
"default": "private"
|
|
}
|
|
},
|
|
"type": "object",
|
|
"required": [
|
|
"name"
|
|
],
|
|
"title": "TreeCreate"
|
|
},
|
|
"TreeRead": {
|
|
"properties": {
|
|
"id": {
|
|
"type": "string",
|
|
"format": "uuid",
|
|
"title": "Id"
|
|
},
|
|
"name": {
|
|
"type": "string",
|
|
"title": "Name"
|
|
},
|
|
"description": {
|
|
"anyOf": [
|
|
{
|
|
"type": "string"
|
|
},
|
|
{
|
|
"type": "null"
|
|
}
|
|
],
|
|
"title": "Description"
|
|
},
|
|
"visibility": {
|
|
"$ref": "#/components/schemas/TreeVisibility"
|
|
},
|
|
"owner_id": {
|
|
"type": "string",
|
|
"format": "uuid",
|
|
"title": "Owner Id"
|
|
},
|
|
"created_at": {
|
|
"type": "string",
|
|
"format": "date-time",
|
|
"title": "Created At"
|
|
}
|
|
},
|
|
"type": "object",
|
|
"required": [
|
|
"id",
|
|
"name",
|
|
"description",
|
|
"visibility",
|
|
"owner_id",
|
|
"created_at"
|
|
],
|
|
"title": "TreeRead"
|
|
},
|
|
"TreeVisibility": {
|
|
"type": "string",
|
|
"enum": [
|
|
"public",
|
|
"unlisted",
|
|
"private"
|
|
],
|
|
"title": "TreeVisibility"
|
|
},
|
|
"UserRead": {
|
|
"properties": {
|
|
"id": {
|
|
"type": "string",
|
|
"format": "uuid",
|
|
"title": "Id"
|
|
},
|
|
"email": {
|
|
"type": "string",
|
|
"title": "Email"
|
|
},
|
|
"display_name": {
|
|
"anyOf": [
|
|
{
|
|
"type": "string"
|
|
},
|
|
{
|
|
"type": "null"
|
|
}
|
|
],
|
|
"title": "Display Name"
|
|
},
|
|
"email_verified_at": {
|
|
"anyOf": [
|
|
{
|
|
"type": "string",
|
|
"format": "date-time"
|
|
},
|
|
{
|
|
"type": "null"
|
|
}
|
|
],
|
|
"title": "Email Verified At"
|
|
},
|
|
"created_at": {
|
|
"type": "string",
|
|
"format": "date-time",
|
|
"title": "Created At"
|
|
}
|
|
},
|
|
"type": "object",
|
|
"required": [
|
|
"id",
|
|
"email",
|
|
"display_name",
|
|
"email_verified_at",
|
|
"created_at"
|
|
],
|
|
"title": "UserRead"
|
|
},
|
|
"ValidationError": {
|
|
"properties": {
|
|
"loc": {
|
|
"items": {
|
|
"anyOf": [
|
|
{
|
|
"type": "string"
|
|
},
|
|
{
|
|
"type": "integer"
|
|
}
|
|
]
|
|
},
|
|
"type": "array",
|
|
"title": "Location"
|
|
},
|
|
"msg": {
|
|
"type": "string",
|
|
"title": "Message"
|
|
},
|
|
"type": {
|
|
"type": "string",
|
|
"title": "Error Type"
|
|
},
|
|
"input": {
|
|
"title": "Input"
|
|
},
|
|
"ctx": {
|
|
"type": "object",
|
|
"title": "Context"
|
|
}
|
|
},
|
|
"type": "object",
|
|
"required": [
|
|
"loc",
|
|
"msg",
|
|
"type"
|
|
],
|
|
"title": "ValidationError"
|
|
}
|
|
}
|
|
}
|
|
} |