diff --git a/spec.json b/spec.json index e8347d36..ae60457c 100644 --- a/spec.json +++ b/spec.json @@ -203,8 +203,30 @@ "meta" ], "summary": "List all active announcements.", - "description": "No authentication is required.", + "description": "No authentication is required. Results are ordered newest first, with the announcement ID breaking ties.", "operationId": "get_announcements", + "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" + } + } + ], "responses": { "200": { "description": "successful operation", @@ -277,7 +299,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/AnnouncementList" + "$ref": "#/components/schemas/AnnouncementResultsPage" } } } @@ -289,7 +311,10 @@ "$ref": "#/components/responses/Error" } }, - "x-billable": false + "x-billable": false, + "x-dropshot-pagination": { + "required": [] + } } }, "/api-calls/{id}": { @@ -16249,6 +16274,28 @@ ], "summary": "List the active categories available for project submissions.", "operationId": "list_project_categories", + "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" + } + } + ], "responses": { "200": { "description": "successful operation", @@ -16320,11 +16367,7 @@ "content": { "application/json": { "schema": { - "title": "Array_of_ProjectCategoryResponse", - "type": "array", - "items": { - "$ref": "#/components/schemas/ProjectCategoryResponse" - } + "$ref": "#/components/schemas/ProjectCategoryResponseResultsPage" } } } @@ -16336,7 +16379,10 @@ "$ref": "#/components/responses/Error" } }, - "x-billable": false + "x-billable": false, + "x-dropshot-pagination": { + "required": [] + } }, "options": { "tags": [ @@ -25946,6 +25992,28 @@ ], "summary": "List the authenticated user's projects.", "operationId": "list_projects", + "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" + } + } + ], "responses": { "200": { "description": "successful operation", @@ -26018,11 +26086,7 @@ "content": { "application/json": { "schema": { - "title": "Array_of_ProjectSummaryResponse", - "type": "array", - "items": { - "$ref": "#/components/schemas/ProjectSummaryResponse" - } + "$ref": "#/components/schemas/ProjectSummaryResponseResultsPage" } } } @@ -26034,7 +26098,10 @@ "$ref": "#/components/responses/Error" } }, - "x-billable": false + "x-billable": false, + "x-dropshot-pagination": { + "required": [] + } }, "post": { "tags": [ @@ -27986,6 +28053,121 @@ "required": [] } }, + "post": { + "tags": [ + "projects" + ], + "summary": "Save an alternate project version without changing the current version.", + "description": "For a history A -> B -> C with C current, saving D with B as its parent creates a second child of B. C stays current. Publications and share links keep pointing to their existing versions.\n\nSend a multipart request with a JSON `body` part and file parts. Upload the complete replacement snapshot, including unchanged files. Each uploaded filename must be its relative project path.\n\nExample JSON for the `body` part (replace the parent placeholder with B's UUID):\n\n```json { \"parent_version_id\": \"\", \"title\": \"Alternative design\", \"description\": \"Trying another shape\", \"entrypoint_path\": \"main.kcl\", \"deleted_paths\": [\"obsolete.kcl\"] } ```\n\n`parent_version_id` and `title` are required. Description defaults to an empty string, and the entrypoint defaults to `main.kcl`. When supplying `deleted_paths`, list all files removed from the chosen parent B, regardless of the files in current C. An empty list declares that no files were removed; omitting the field skips this deletion-intent check.\n\nSave the JSON as `save-metadata.json`. With D's files in the working directory, set `API_BASE_URL`, `API_TOKEN`, and `PROJECT_ID`, then generate `SAVE_KEY` once for this save (for example, using `uuidgen`):\n\n```sh curl --fail-with-body \\ --request POST \"${API_BASE_URL}/user/projects/${PROJECT_ID}/versions\" \\ --header \"Authorization: Bearer ${API_TOKEN}\" \\ --header \"Idempotency-Key: ${SAVE_KEY}\" \\ --form 'body=