diff --git a/spec.json b/spec.json index a259dcd6..e27199d3 100644 --- a/spec.json +++ b/spec.json @@ -17314,6 +17314,37 @@ } } }, + "/projects/shared/{key}/download": { + "get": { + "tags": [ + "hidden", + "users" + ], + "summary": "Download a project using a share link.", + "operationId": "download_shared_project", + "parameters": [ + { + "in": "path", + "name": "key", + "description": "Share-link key.", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "default": { + "description": "", + "content": { + "*/*": { + "schema": {} + } + } + } + } + } + }, "/store/coupon": { "post": { "tags": [ @@ -25121,6 +25152,101 @@ } } }, + "delete": { + "tags": [ + "users" + ], + "summary": "Delete one of the authenticated user's projects.", + "operationId": "delete_user_project", + "parameters": [ + { + "in": "path", + "name": "id", + "description": "The identifier.", + "required": true, + "schema": { + "$ref": "#/components/schemas/Uuid" + } + } + ], + "responses": { + "204": { + "description": "successful deletion", + "headers": { + "Access-Control-Allow-Credentials": { + "description": "Access-Control-Allow-Credentials header.", + "style": "simple", + "schema": { + "nullable": true, + "type": "string" + } + }, + "Access-Control-Allow-Headers": { + "description": "Access-Control-Allow-Headers header. This is a comma-separated list of headers.", + "style": "simple", + "schema": { + "nullable": true, + "type": "string" + } + }, + "Access-Control-Allow-Methods": { + "description": "Access-Control-Allow-Methods header.", + "style": "simple", + "schema": { + "nullable": true, + "type": "string" + } + }, + "Access-Control-Allow-Origin": { + "description": "Access-Control-Allow-Origin header.", + "style": "simple", + "schema": { + "nullable": true, + "type": "string" + } + }, + "Content-Location": { + "description": "The Content-Location header for responses that are not the final destination. This is used to indicate where the resource can be found, when it is finished.", + "style": "simple", + "schema": { + "nullable": true, + "type": "string" + } + }, + "Location": { + "description": "The location header for redirects and letting users know if there is a websocket they can listen to for status updates on their operation.", + "style": "simple", + "schema": { + "nullable": true, + "type": "string" + } + }, + "Set-Cookie": { + "description": "Set-Cookie header.", + "style": "simple", + "schema": { + "nullable": true, + "type": "string" + } + }, + "X-Api-Call-Id": { + "description": "ID for this request. We return it so that users can report this to us and help us debug their problems.", + "style": "simple", + "required": true, + "schema": { + "type": "string" + } + } + } + }, + "4XX": { + "$ref": "#/components/responses/Error" + }, + "5XX": { + "$ref": "#/components/responses/Error" + } + } + }, "options": { "tags": [ "hidden" @@ -25448,22 +25574,21 @@ } } }, - "/user/session/{token}": { + "/user/projects/{id}/share-links": { "get": { "tags": [ "users" ], - "summary": "Get a session for your user.", - "description": "This endpoint requires authentication by any Zoo user. It returns details of the requested API token for the user.", - "operationId": "get_session_for_user", + "summary": "List share links for one of the authenticated user's projects.", + "operationId": "list_user_project_share_links", "parameters": [ { "in": "path", - "name": "token", - "description": "The API token.", + "name": "id", + "description": "The identifier.", "required": true, "schema": { - "$ref": "#/components/schemas/SessionUuid" + "$ref": "#/components/schemas/Uuid" } } ], @@ -25539,7 +25664,11 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/Session" + "title": "Array_of_ProjectShareLinkResponse", + "type": "array", + "items": { + "$ref": "#/components/schemas/ProjectShareLinkResponse" + } } } } @@ -25551,49 +25680,37 @@ "$ref": "#/components/responses/Error" } } - } - }, - "/user/shortlinks": { - "get": { + }, + "post": { "tags": [ - "users", - "shortlinks" + "users" ], - "summary": "Get the shortlinks for a user.", - "description": "This endpoint requires authentication by any Zoo user. It gets the shortlinks for the user.", - "operationId": "get_user_shortlinks", + "summary": "Create a share link for one of the authenticated user's projects.", + "operationId": "create_user_project_share_link", "parameters": [ { - "in": "query", - "name": "limit", - "description": "Maximum number of items returned by a single call", - "schema": { - "nullable": true, - "type": "integer", - "format": "uint32", - "minimum": 1 - } - }, - { - "in": "query", - "name": "page_token", - "description": "Token returned by previous call to retrieve the subsequent page", - "schema": { - "nullable": true, - "type": "string" - } - }, - { - "in": "query", - "name": "sort_by", + "in": "path", + "name": "id", + "description": "The identifier.", + "required": true, "schema": { - "$ref": "#/components/schemas/CreatedAtSortMode" + "$ref": "#/components/schemas/Uuid" } } ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CreateProjectShareLinkRequest" + } + } + }, + "required": true + }, "responses": { - "200": { - "description": "successful operation", + "201": { + "description": "successful creation", "headers": { "Access-Control-Allow-Credentials": { "description": "Access-Control-Allow-Credentials header.", @@ -25663,7 +25780,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/ShortlinkResultsPage" + "$ref": "#/components/schemas/ProjectShareLinkResponse" } } } @@ -25674,32 +25791,29 @@ "5XX": { "$ref": "#/components/responses/Error" } - }, - "x-dropshot-pagination": { - "required": [] } }, - "post": { + "options": { "tags": [ - "users", - "shortlinks" + "hidden" ], - "summary": "Create a shortlink for a user.", - "description": "This endpoint requires authentication by any Zoo user. It creates a shortlink for the user.", - "operationId": "create_user_shortlink", - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/CreateShortlinkRequest" - } + "summary": "OPTIONS endpoint.", + "description": "This is necessary for some preflight requests, specifically POST, PUT, and DELETE.", + "operationId": "options_user_project_share_links", + "parameters": [ + { + "in": "path", + "name": "id", + "description": "The identifier.", + "required": true, + "schema": { + "$ref": "#/components/schemas/Uuid" } - }, - "required": true - }, + } + ], "responses": { - "201": { - "description": "successful creation", + "204": { + "description": "successful operation, no content", "headers": { "Access-Control-Allow-Credentials": { "description": "Access-Control-Allow-Credentials header.", @@ -25765,13 +25879,6 @@ "type": "string" } } - }, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/CreateShortlinkResponse" - } - } } }, "4XX": { @@ -25781,14 +25888,35 @@ "$ref": "#/components/responses/Error" } } - }, - "options": { + } + }, + "/user/projects/{id}/share-links/{key}": { + "delete": { "tags": [ - "hidden" + "users" + ], + "summary": "Delete one share link for one of the authenticated user's projects.", + "operationId": "delete_user_project_share_link", + "parameters": [ + { + "in": "path", + "name": "id", + "description": "Project identifier.", + "required": true, + "schema": { + "$ref": "#/components/schemas/Uuid" + } + }, + { + "in": "path", + "name": "key", + "description": "Share-link key.", + "required": true, + "schema": { + "type": "string" + } + } ], - "summary": "OPTIONS endpoint.", - "description": "This is necessary for some preflight requests, specifically POST, PUT, and DELETE.", - "operationId": "options_user_shortlinks", "responses": { "204": { "description": "resource updated", @@ -25866,23 +25994,28 @@ "$ref": "#/components/responses/Error" } } - } - }, - "/user/shortlinks/{key}": { - "get": { + }, + "options": { "tags": [ - "hidden", - "users", - "shortlinks" + "hidden" ], - "summary": "Redirect the user to the URL for the shortlink.", - "description": "This endpoint might require authentication by a Zoo user. It gets the shortlink for the user and redirects them to the URL. If the shortlink is owned by an org, the user must be a member of the org.", - "operationId": "redirect_user_shortlink", + "summary": "OPTIONS endpoint.", + "description": "This is necessary for some preflight requests, specifically POST, PUT, and DELETE.", + "operationId": "options_delete_user_project_share_link", "parameters": [ + { + "in": "path", + "name": "id", + "description": "Project identifier.", + "required": true, + "schema": { + "$ref": "#/components/schemas/Uuid" + } + }, { "in": "path", "name": "key", - "description": "The key of the shortlink.", + "description": "Share-link key.", "required": true, "schema": { "type": "string" @@ -25890,8 +26023,8 @@ } ], "responses": { - "302": { - "description": "Temporary Redirect", + "204": { + "description": "successful operation, no content", "headers": { "Access-Control-Allow-Credentials": { "description": "Access-Control-Allow-Credentials header.", @@ -25966,39 +26099,30 @@ "$ref": "#/components/responses/Error" } } - }, - "put": { + } + }, + "/user/session/{token}": { + "get": { "tags": [ - "users", - "shortlinks" + "users" ], - "summary": "Update a shortlink for a user.", - "description": "This endpoint requires authentication by any Zoo user. It updates a shortlink for the user.\n\nThis endpoint really only allows you to change the `restrict_to_org` setting of a shortlink. Thus it is only useful for folks who are part of an org. If you are not part of an org, you will not be able to change the `restrict_to_org` status.", - "operationId": "update_user_shortlink", + "summary": "Get a session for your user.", + "description": "This endpoint requires authentication by any Zoo user. It returns details of the requested API token for the user.", + "operationId": "get_session_for_user", "parameters": [ { "in": "path", - "name": "key", - "description": "The key of the shortlink.", + "name": "token", + "description": "The API token.", "required": true, "schema": { - "type": "string" + "$ref": "#/components/schemas/SessionUuid" } } ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/UpdateShortlinkRequest" - } - } - }, - "required": true - }, "responses": { - "204": { - "description": "resource updated", + "200": { + "description": "successful operation", "headers": { "Access-Control-Allow-Credentials": { "description": "Access-Control-Allow-Credentials header.", @@ -26064,6 +26188,13 @@ "type": "string" } } + }, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Session" + } + } } }, "4XX": { @@ -26073,29 +26204,49 @@ "$ref": "#/components/responses/Error" } } - }, - "delete": { + } + }, + "/user/shortlinks": { + "get": { "tags": [ "users", "shortlinks" ], - "summary": "Delete a shortlink for a user.", - "description": "This endpoint requires authentication by any Zoo user. It deletes a shortlink for the user.", - "operationId": "delete_user_shortlink", + "summary": "Get the shortlinks for a user.", + "description": "This endpoint requires authentication by any Zoo user. It gets the shortlinks for the user.", + "operationId": "get_user_shortlinks", "parameters": [ { - "in": "path", - "name": "key", - "description": "The key of the shortlink.", - "required": true, + "in": "query", + "name": "limit", + "description": "Maximum number of items returned by a single call", "schema": { + "nullable": true, + "type": "integer", + "format": "uint32", + "minimum": 1 + } + }, + { + "in": "query", + "name": "page_token", + "description": "Token returned by previous call to retrieve the subsequent page", + "schema": { + "nullable": true, "type": "string" } + }, + { + "in": "query", + "name": "sort_by", + "schema": { + "$ref": "#/components/schemas/CreatedAtSortMode" + } } ], "responses": { - "204": { - "description": "resource updated", + "200": { + "description": "successful operation", "headers": { "Access-Control-Allow-Credentials": { "description": "Access-Control-Allow-Credentials header.", @@ -26161,6 +26312,13 @@ "type": "string" } } + }, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ShortlinkResultsPage" + } + } } }, "4XX": { @@ -26169,29 +26327,32 @@ "5XX": { "$ref": "#/components/responses/Error" } + }, + "x-dropshot-pagination": { + "required": [] } }, - "options": { + "post": { "tags": [ - "hidden" + "users", + "shortlinks" ], - "summary": "OPTIONS endpoint.", - "description": "This is necessary for some preflight requests, specifically POST, PUT, and DELETE.", - "operationId": "options_delete_user_shortlinks", - "parameters": [ - { - "in": "path", - "name": "key", - "description": "The key of the shortlink.", - "required": true, - "schema": { - "type": "string" + "summary": "Create a shortlink for a user.", + "description": "This endpoint requires authentication by any Zoo user. It creates a shortlink for the user.", + "operationId": "create_user_shortlink", + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CreateShortlinkRequest" + } } - } - ], + }, + "required": true + }, "responses": { - "204": { - "description": "successful operation, no content", + "201": { + "description": "successful creation", "headers": { "Access-Control-Allow-Credentials": { "description": "Access-Control-Allow-Credentials header.", @@ -26257,6 +26418,13 @@ "type": "string" } } + }, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CreateShortlinkResponse" + } + } } }, "4XX": { @@ -26266,74 +26434,17 @@ "$ref": "#/components/responses/Error" } } - } - }, - "/user/text-to-cad": { - "get": { + }, + "options": { "tags": [ - "ml" - ], - "summary": "List text-to-CAD parts you've generated.", - "description": "This will always return the STEP file contents as well as the format the user originally requested.\n\nThis endpoint requires authentication by any Zoo user. It returns the text-to-CAD parts for the authenticated user.\n\nThe text-to-CAD parts are returned in order of creation, with the most recently created text-to-CAD parts first.", - "operationId": "list_text_to_cad_parts_for_user", - "parameters": [ - { - "in": "query", - "name": "limit", - "description": "Maximum number of items returned by a single call", - "schema": { - "nullable": true, - "type": "integer", - "format": "uint32", - "minimum": 1 - } - }, - { - "in": "query", - "name": "page_token", - "description": "Token returned by previous call to retrieve the subsequent page", - "schema": { - "nullable": true, - "type": "string" - } - }, - { - "in": "query", - "name": "sort_by", - "schema": { - "$ref": "#/components/schemas/CreatedAtSortMode" - } - }, - { - "in": "query", - "name": "no_models", - "description": "DEPRECATED: This is the same as `no_parts`, and will be dropped in a future release. Please do not use this.", - "schema": { - "nullable": true, - "type": "boolean" - } - }, - { - "in": "query", - "name": "no_parts", - "description": "If we should return the part contents or just the metadata.", - "schema": { - "nullable": true, - "type": "boolean" - } - }, - { - "in": "query", - "name": "conversation_id", - "description": "If specified, only return the prompts for the conversation id given.", - "schema": { - "$ref": "#/components/schemas/Uuid" - } - } + "hidden" ], + "summary": "OPTIONS endpoint.", + "description": "This is necessary for some preflight requests, specifically POST, PUT, and DELETE.", + "operationId": "options_user_shortlinks", "responses": { - "200": { - "description": "successful operation", + "204": { + "description": "resource updated", "headers": { "Access-Control-Allow-Credentials": { "description": "Access-Control-Allow-Credentials header.", @@ -26399,13 +26510,6 @@ "type": "string" } } - }, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/TextToCadResponseResultsPage" - } - } } }, "4XX": { @@ -26414,35 +26518,33 @@ "5XX": { "$ref": "#/components/responses/Error" } - }, - "x-dropshot-pagination": { - "required": [] } } }, - "/user/text-to-cad/{id}": { + "/user/shortlinks/{key}": { "get": { "tags": [ - "ml" + "hidden", + "users", + "shortlinks" ], - "summary": "Get a text-to-CAD response.", - "description": "This endpoint requires authentication by any Zoo user. The user must be the owner of the text-to-CAD model.", - "operationId": "get_text_to_cad_part_for_user", + "summary": "Redirect the user to the URL for the shortlink.", + "description": "This endpoint might require authentication by a Zoo user. It gets the shortlink for the user and redirects them to the URL. If the shortlink is owned by an org, the user must be a member of the org.", + "operationId": "redirect_user_shortlink", "parameters": [ { "in": "path", - "name": "id", - "description": "The id of the model to give feedback to.", + "name": "key", + "description": "The key of the shortlink.", "required": true, "schema": { - "type": "string", - "format": "uuid" + "type": "string" } } ], "responses": { - "200": { - "description": "successful operation", + "302": { + "description": "Temporary Redirect", "headers": { "Access-Control-Allow-Credentials": { "description": "Access-Control-Allow-Credentials header.", @@ -26508,13 +26610,6 @@ "type": "string" } } - }, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/TextToCadResponse" - } - } } }, "4XX": { @@ -26525,31 +26620,129 @@ } } }, - "post": { + "put": { "tags": [ - "ml" + "users", + "shortlinks" ], - "summary": "Give feedback to a specific ML response.", - "description": "This can be a text-to-CAD creation or iteration.\n\nThis endpoint requires authentication by any Zoo user. The user must be the owner of the ML response, in order to give feedback.", - "operationId": "create_text_to_cad_part_feedback", + "summary": "Update a shortlink for a user.", + "description": "This endpoint requires authentication by any Zoo user. It updates a shortlink for the user.\n\nThis endpoint really only allows you to change the `restrict_to_org` setting of a shortlink. Thus it is only useful for folks who are part of an org. If you are not part of an org, you will not be able to change the `restrict_to_org` status.", + "operationId": "update_user_shortlink", "parameters": [ { "in": "path", - "name": "id", - "description": "The id of the model to give feedback to.", + "name": "key", + "description": "The key of the shortlink.", "required": true, "schema": { - "type": "string", - "format": "uuid" + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/UpdateShortlinkRequest" + } } }, + "required": true + }, + "responses": { + "204": { + "description": "resource updated", + "headers": { + "Access-Control-Allow-Credentials": { + "description": "Access-Control-Allow-Credentials header.", + "style": "simple", + "schema": { + "nullable": true, + "type": "string" + } + }, + "Access-Control-Allow-Headers": { + "description": "Access-Control-Allow-Headers header. This is a comma-separated list of headers.", + "style": "simple", + "schema": { + "nullable": true, + "type": "string" + } + }, + "Access-Control-Allow-Methods": { + "description": "Access-Control-Allow-Methods header.", + "style": "simple", + "schema": { + "nullable": true, + "type": "string" + } + }, + "Access-Control-Allow-Origin": { + "description": "Access-Control-Allow-Origin header.", + "style": "simple", + "schema": { + "nullable": true, + "type": "string" + } + }, + "Content-Location": { + "description": "The Content-Location header for responses that are not the final destination. This is used to indicate where the resource can be found, when it is finished.", + "style": "simple", + "schema": { + "nullable": true, + "type": "string" + } + }, + "Location": { + "description": "The location header for redirects and letting users know if there is a websocket they can listen to for status updates on their operation.", + "style": "simple", + "schema": { + "nullable": true, + "type": "string" + } + }, + "Set-Cookie": { + "description": "Set-Cookie header.", + "style": "simple", + "schema": { + "nullable": true, + "type": "string" + } + }, + "X-Api-Call-Id": { + "description": "ID for this request. We return it so that users can report this to us and help us debug their problems.", + "style": "simple", + "required": true, + "schema": { + "type": "string" + } + } + } + }, + "4XX": { + "$ref": "#/components/responses/Error" + }, + "5XX": { + "$ref": "#/components/responses/Error" + } + } + }, + "delete": { + "tags": [ + "users", + "shortlinks" + ], + "summary": "Delete a shortlink for a user.", + "description": "This endpoint requires authentication by any Zoo user. It deletes a shortlink for the user.", + "operationId": "delete_user_shortlink", + "parameters": [ { - "in": "query", - "name": "feedback", - "description": "The feedback.", + "in": "path", + "name": "key", + "description": "The key of the shortlink.", "required": true, "schema": { - "$ref": "#/components/schemas/MlFeedback" + "type": "string" } } ], @@ -26637,16 +26830,15 @@ ], "summary": "OPTIONS endpoint.", "description": "This is necessary for some preflight requests, specifically POST, PUT, and DELETE.", - "operationId": "options_text_to_cad_part_feedback", + "operationId": "options_delete_user_shortlinks", "parameters": [ { "in": "path", - "name": "id", - "description": "The id of the model to give feedback to.", + "name": "key", + "description": "The key of the shortlink.", "required": true, "schema": { - "type": "string", - "format": "uuid" + "type": "string" } } ], @@ -26729,15 +26921,14 @@ } } }, - "/users": { + "/user/text-to-cad": { "get": { "tags": [ - "users", - "hidden" + "ml" ], - "summary": "List users.", - "description": "This endpoint requires authentication by a Zoo employee. The users are returned in order of creation, with the most recently created users first.", - "operationId": "list_users", + "summary": "List text-to-CAD parts you've generated.", + "description": "This will always return the STEP file contents as well as the format the user originally requested.\n\nThis endpoint requires authentication by any Zoo user. It returns the text-to-CAD parts for the authenticated user.\n\nThe text-to-CAD parts are returned in order of creation, with the most recently created text-to-CAD parts first.", + "operationId": "list_text_to_cad_parts_for_user", "parameters": [ { "in": "query", @@ -26765,6 +26956,32 @@ "schema": { "$ref": "#/components/schemas/CreatedAtSortMode" } + }, + { + "in": "query", + "name": "no_models", + "description": "DEPRECATED: This is the same as `no_parts`, and will be dropped in a future release. Please do not use this.", + "schema": { + "nullable": true, + "type": "boolean" + } + }, + { + "in": "query", + "name": "no_parts", + "description": "If we should return the part contents or just the metadata.", + "schema": { + "nullable": true, + "type": "boolean" + } + }, + { + "in": "query", + "name": "conversation_id", + "description": "If specified, only return the prompts for the conversation id given.", + "schema": { + "$ref": "#/components/schemas/Uuid" + } } ], "responses": { @@ -26839,7 +27056,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/UserResponseResultsPage" + "$ref": "#/components/schemas/TextToCadResponseResultsPage" } } } @@ -26856,41 +27073,23 @@ } } }, - "/users-extended": { + "/user/text-to-cad/{id}": { "get": { "tags": [ - "users", - "hidden" + "ml" ], - "summary": "List users with extended information.", - "description": "This endpoint requires authentication by a Zoo employee. The users are returned in order of creation, with the most recently created users first.", - "operationId": "list_users_extended", + "summary": "Get a text-to-CAD response.", + "description": "This endpoint requires authentication by any Zoo user. The user must be the owner of the text-to-CAD model.", + "operationId": "get_text_to_cad_part_for_user", "parameters": [ { - "in": "query", - "name": "limit", - "description": "Maximum number of items returned by a single call", - "schema": { - "nullable": true, - "type": "integer", - "format": "uint32", - "minimum": 1 - } - }, - { - "in": "query", - "name": "page_token", - "description": "Token returned by previous call to retrieve the subsequent page", - "schema": { - "nullable": true, - "type": "string" - } - }, - { - "in": "query", - "name": "sort_by", + "in": "path", + "name": "id", + "description": "The id of the model to give feedback to.", + "required": true, "schema": { - "$ref": "#/components/schemas/CreatedAtSortMode" + "type": "string", + "format": "uuid" } } ], @@ -26966,7 +27165,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/ExtendedUserResultsPage" + "$ref": "#/components/schemas/TextToCadResponse" } } } @@ -26977,35 +27176,489 @@ "5XX": { "$ref": "#/components/responses/Error" } - }, - "x-dropshot-pagination": { - "required": [] } - } - }, - "/users-extended/{id}": { - "get": { + }, + "post": { "tags": [ - "users", - "hidden" + "ml" ], - "summary": "Get extended information about a user.", - "description": "To get information about yourself, use `/users-extended/me` as the endpoint. By doing so you will get the user information for the authenticated user.\n\nAlternatively, to get information about the authenticated user, use `/user/extended` endpoint.", - "operationId": "get_user_extended", + "summary": "Give feedback to a specific ML response.", + "description": "This can be a text-to-CAD creation or iteration.\n\nThis endpoint requires authentication by any Zoo user. The user must be the owner of the ML response, in order to give feedback.", + "operationId": "create_text_to_cad_part_feedback", "parameters": [ { "in": "path", "name": "id", - "description": "The user's identifier (uuid or email).", + "description": "The id of the model to give feedback to.", "required": true, "schema": { - "$ref": "#/components/schemas/UserIdentifier" + "type": "string", + "format": "uuid" + } + }, + { + "in": "query", + "name": "feedback", + "description": "The feedback.", + "required": true, + "schema": { + "$ref": "#/components/schemas/MlFeedback" } } ], "responses": { - "200": { - "description": "successful operation", + "204": { + "description": "resource updated", + "headers": { + "Access-Control-Allow-Credentials": { + "description": "Access-Control-Allow-Credentials header.", + "style": "simple", + "schema": { + "nullable": true, + "type": "string" + } + }, + "Access-Control-Allow-Headers": { + "description": "Access-Control-Allow-Headers header. This is a comma-separated list of headers.", + "style": "simple", + "schema": { + "nullable": true, + "type": "string" + } + }, + "Access-Control-Allow-Methods": { + "description": "Access-Control-Allow-Methods header.", + "style": "simple", + "schema": { + "nullable": true, + "type": "string" + } + }, + "Access-Control-Allow-Origin": { + "description": "Access-Control-Allow-Origin header.", + "style": "simple", + "schema": { + "nullable": true, + "type": "string" + } + }, + "Content-Location": { + "description": "The Content-Location header for responses that are not the final destination. This is used to indicate where the resource can be found, when it is finished.", + "style": "simple", + "schema": { + "nullable": true, + "type": "string" + } + }, + "Location": { + "description": "The location header for redirects and letting users know if there is a websocket they can listen to for status updates on their operation.", + "style": "simple", + "schema": { + "nullable": true, + "type": "string" + } + }, + "Set-Cookie": { + "description": "Set-Cookie header.", + "style": "simple", + "schema": { + "nullable": true, + "type": "string" + } + }, + "X-Api-Call-Id": { + "description": "ID for this request. We return it so that users can report this to us and help us debug their problems.", + "style": "simple", + "required": true, + "schema": { + "type": "string" + } + } + } + }, + "4XX": { + "$ref": "#/components/responses/Error" + }, + "5XX": { + "$ref": "#/components/responses/Error" + } + } + }, + "options": { + "tags": [ + "hidden" + ], + "summary": "OPTIONS endpoint.", + "description": "This is necessary for some preflight requests, specifically POST, PUT, and DELETE.", + "operationId": "options_text_to_cad_part_feedback", + "parameters": [ + { + "in": "path", + "name": "id", + "description": "The id of the model to give feedback to.", + "required": true, + "schema": { + "type": "string", + "format": "uuid" + } + } + ], + "responses": { + "204": { + "description": "successful operation, no content", + "headers": { + "Access-Control-Allow-Credentials": { + "description": "Access-Control-Allow-Credentials header.", + "style": "simple", + "schema": { + "nullable": true, + "type": "string" + } + }, + "Access-Control-Allow-Headers": { + "description": "Access-Control-Allow-Headers header. This is a comma-separated list of headers.", + "style": "simple", + "schema": { + "nullable": true, + "type": "string" + } + }, + "Access-Control-Allow-Methods": { + "description": "Access-Control-Allow-Methods header.", + "style": "simple", + "schema": { + "nullable": true, + "type": "string" + } + }, + "Access-Control-Allow-Origin": { + "description": "Access-Control-Allow-Origin header.", + "style": "simple", + "schema": { + "nullable": true, + "type": "string" + } + }, + "Content-Location": { + "description": "The Content-Location header for responses that are not the final destination. This is used to indicate where the resource can be found, when it is finished.", + "style": "simple", + "schema": { + "nullable": true, + "type": "string" + } + }, + "Location": { + "description": "The location header for redirects and letting users know if there is a websocket they can listen to for status updates on their operation.", + "style": "simple", + "schema": { + "nullable": true, + "type": "string" + } + }, + "Set-Cookie": { + "description": "Set-Cookie header.", + "style": "simple", + "schema": { + "nullable": true, + "type": "string" + } + }, + "X-Api-Call-Id": { + "description": "ID for this request. We return it so that users can report this to us and help us debug their problems.", + "style": "simple", + "required": true, + "schema": { + "type": "string" + } + } + } + }, + "4XX": { + "$ref": "#/components/responses/Error" + }, + "5XX": { + "$ref": "#/components/responses/Error" + } + } + } + }, + "/users": { + "get": { + "tags": [ + "users", + "hidden" + ], + "summary": "List users.", + "description": "This endpoint requires authentication by a Zoo employee. The users are returned in order of creation, with the most recently created users first.", + "operationId": "list_users", + "parameters": [ + { + "in": "query", + "name": "limit", + "description": "Maximum number of items returned by a single call", + "schema": { + "nullable": true, + "type": "integer", + "format": "uint32", + "minimum": 1 + } + }, + { + "in": "query", + "name": "page_token", + "description": "Token returned by previous call to retrieve the subsequent page", + "schema": { + "nullable": true, + "type": "string" + } + }, + { + "in": "query", + "name": "sort_by", + "schema": { + "$ref": "#/components/schemas/CreatedAtSortMode" + } + } + ], + "responses": { + "200": { + "description": "successful operation", + "headers": { + "Access-Control-Allow-Credentials": { + "description": "Access-Control-Allow-Credentials header.", + "style": "simple", + "schema": { + "nullable": true, + "type": "string" + } + }, + "Access-Control-Allow-Headers": { + "description": "Access-Control-Allow-Headers header. This is a comma-separated list of headers.", + "style": "simple", + "schema": { + "nullable": true, + "type": "string" + } + }, + "Access-Control-Allow-Methods": { + "description": "Access-Control-Allow-Methods header.", + "style": "simple", + "schema": { + "nullable": true, + "type": "string" + } + }, + "Access-Control-Allow-Origin": { + "description": "Access-Control-Allow-Origin header.", + "style": "simple", + "schema": { + "nullable": true, + "type": "string" + } + }, + "Content-Location": { + "description": "The Content-Location header for responses that are not the final destination. This is used to indicate where the resource can be found, when it is finished.", + "style": "simple", + "schema": { + "nullable": true, + "type": "string" + } + }, + "Location": { + "description": "The location header for redirects and letting users know if there is a websocket they can listen to for status updates on their operation.", + "style": "simple", + "schema": { + "nullable": true, + "type": "string" + } + }, + "Set-Cookie": { + "description": "Set-Cookie header.", + "style": "simple", + "schema": { + "nullable": true, + "type": "string" + } + }, + "X-Api-Call-Id": { + "description": "ID for this request. We return it so that users can report this to us and help us debug their problems.", + "style": "simple", + "required": true, + "schema": { + "type": "string" + } + } + }, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/UserResponseResultsPage" + } + } + } + }, + "4XX": { + "$ref": "#/components/responses/Error" + }, + "5XX": { + "$ref": "#/components/responses/Error" + } + }, + "x-dropshot-pagination": { + "required": [] + } + } + }, + "/users-extended": { + "get": { + "tags": [ + "users", + "hidden" + ], + "summary": "List users with extended information.", + "description": "This endpoint requires authentication by a Zoo employee. The users are returned in order of creation, with the most recently created users first.", + "operationId": "list_users_extended", + "parameters": [ + { + "in": "query", + "name": "limit", + "description": "Maximum number of items returned by a single call", + "schema": { + "nullable": true, + "type": "integer", + "format": "uint32", + "minimum": 1 + } + }, + { + "in": "query", + "name": "page_token", + "description": "Token returned by previous call to retrieve the subsequent page", + "schema": { + "nullable": true, + "type": "string" + } + }, + { + "in": "query", + "name": "sort_by", + "schema": { + "$ref": "#/components/schemas/CreatedAtSortMode" + } + } + ], + "responses": { + "200": { + "description": "successful operation", + "headers": { + "Access-Control-Allow-Credentials": { + "description": "Access-Control-Allow-Credentials header.", + "style": "simple", + "schema": { + "nullable": true, + "type": "string" + } + }, + "Access-Control-Allow-Headers": { + "description": "Access-Control-Allow-Headers header. This is a comma-separated list of headers.", + "style": "simple", + "schema": { + "nullable": true, + "type": "string" + } + }, + "Access-Control-Allow-Methods": { + "description": "Access-Control-Allow-Methods header.", + "style": "simple", + "schema": { + "nullable": true, + "type": "string" + } + }, + "Access-Control-Allow-Origin": { + "description": "Access-Control-Allow-Origin header.", + "style": "simple", + "schema": { + "nullable": true, + "type": "string" + } + }, + "Content-Location": { + "description": "The Content-Location header for responses that are not the final destination. This is used to indicate where the resource can be found, when it is finished.", + "style": "simple", + "schema": { + "nullable": true, + "type": "string" + } + }, + "Location": { + "description": "The location header for redirects and letting users know if there is a websocket they can listen to for status updates on their operation.", + "style": "simple", + "schema": { + "nullable": true, + "type": "string" + } + }, + "Set-Cookie": { + "description": "Set-Cookie header.", + "style": "simple", + "schema": { + "nullable": true, + "type": "string" + } + }, + "X-Api-Call-Id": { + "description": "ID for this request. We return it so that users can report this to us and help us debug their problems.", + "style": "simple", + "required": true, + "schema": { + "type": "string" + } + } + }, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ExtendedUserResultsPage" + } + } + } + }, + "4XX": { + "$ref": "#/components/responses/Error" + }, + "5XX": { + "$ref": "#/components/responses/Error" + } + }, + "x-dropshot-pagination": { + "required": [] + } + } + }, + "/users-extended/{id}": { + "get": { + "tags": [ + "users", + "hidden" + ], + "summary": "Get extended information about a user.", + "description": "To get information about yourself, use `/users-extended/me` as the endpoint. By doing so you will get the user information for the authenticated user.\n\nAlternatively, to get information about the authenticated user, use `/user/extended` endpoint.", + "operationId": "get_user_extended", + "parameters": [ + { + "in": "path", + "name": "id", + "description": "The user's identifier (uuid or email).", + "required": true, + "schema": { + "$ref": "#/components/schemas/UserIdentifier" + } + } + ], + "responses": { + "200": { + "description": "successful operation", "headers": { "Access-Control-Allow-Credentials": { "description": "Access-Control-Allow-Credentials header.", @@ -33865,6 +34518,21 @@ "source" ] }, + "CreateProjectShareLinkRequest": { + "description": "Request payload for creating a new project share link.", + "type": "object", + "properties": { + "access_mode": { + "description": "Access policy for the generated share link.", + "default": "anyone_with_link", + "allOf": [ + { + "$ref": "#/components/schemas/KclProjectShareLinkAccessMode" + } + ] + } + } + }, "CreateRegion": { "description": "The response from the 'CreateRegion'. The region should have an ID taken from the ID of the 'CreateRegion' modeling command.", "type": "object", @@ -37841,6 +38509,25 @@ } ] }, + "KclProjectShareLinkAccessMode": { + "description": "Access policy for a shared project download link.", + "oneOf": [ + { + "description": "Anyone holding the URL can download the project.", + "type": "string", + "enum": [ + "anyone_with_link" + ] + }, + { + "description": "Only members of the owner's organization can use the URL.", + "type": "string", + "enum": [ + "organization_only" + ] + } + ] + }, "LengthUnit": { "type": "number", "format": "double" @@ -50415,6 +51102,48 @@ "updated_at" ] }, + "ProjectShareLinkResponse": { + "description": "Owner-visible share-link metadata for project downloads.", + "type": "object", + "properties": { + "access_mode": { + "description": "Access policy for the share link.", + "allOf": [ + { + "$ref": "#/components/schemas/KclProjectShareLinkAccessMode" + } + ] + }, + "created_at": { + "title": "DateTime", + "description": "Share-link creation timestamp.", + "type": "string", + "format": "date-time" + }, + "key": { + "description": "Opaque identifier used in the public shared URL.", + "type": "string" + }, + "updated_at": { + "title": "DateTime", + "description": "Share-link last update timestamp.", + "type": "string", + "format": "date-time" + }, + "url": { + "description": "Fully-qualified URL that can be shared.", + "type": "string", + "format": "uri" + } + }, + "required": [ + "access_mode", + "created_at", + "key", + "updated_at", + "url" + ] + }, "ProjectSummaryResponse": { "description": "Owner-visible project summary payload.", "type": "object", @@ -55727,6 +56456,10 @@ "default": "", "type": "string", "format": "phone" + }, + "username": { + "description": "Public username/handle for community-facing features. Empty clears it.", + "type": "string" } }, "required": [