diff --git a/package-lock.json b/package-lock.json index 7d00a731..97edb6ed 100644 --- a/package-lock.json +++ b/package-lock.json @@ -23,7 +23,7 @@ "@tailwindcss/forms": "^0.5.9", "@tailwindcss/typography": "^0.5.15", "@types/js-cookie": "^3.0.6", - "@types/node": "^20.17.6", + "@types/node": "^22.9.0", "@types/prismjs": "^1.26.5", "@types/react": "^18.3.12", "@types/react-dom": "^18.3.1", @@ -1223,12 +1223,13 @@ "optional": true }, "node_modules/@types/node": { - "version": "20.17.6", - "resolved": "https://registry.npmjs.org/@types/node/-/node-20.17.6.tgz", - "integrity": "sha512-VEI7OdvK2wP7XHnsuXbAJnEpEkF6NjSN45QJlL4VGqZSXsnicpesdTWsg9RISeSdYd3yeRj/y3k5KGjUXYnFwQ==", + "version": "22.9.0", + "resolved": "https://registry.npmjs.org/@types/node/-/node-22.9.0.tgz", + "integrity": "sha512-vuyHg81vvWA1Z1ELfvLko2c8f34gyA0zaic0+Rllc5lbCnbSyuvb2Oxpm6TAUAC/2xZN3QGqxBNggD1nNR2AfQ==", "dev": true, + "license": "MIT", "dependencies": { - "undici-types": "~6.19.2" + "undici-types": "~6.19.8" } }, "node_modules/@types/prismjs": { @@ -4143,9 +4144,9 @@ } }, "node_modules/micromatch": { - "version": "4.0.7", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.7.tgz", - "integrity": "sha512-LPP/3KorzCwBxfeUuZmaR6bG2kdeHSbe0P2tY3FLRU4vYrjYz5hI4QZwV0njUx3jeuKe67YukQ1LSPZBKDqO/Q==", + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz", + "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==", "dev": true, "license": "MIT", "dependencies": { diff --git a/package.json b/package.json index 323fba90..3d8fefbe 100644 --- a/package.json +++ b/package.json @@ -25,7 +25,7 @@ "@tailwindcss/forms": "^0.5.9", "@tailwindcss/typography": "^0.5.15", "@types/js-cookie": "^3.0.6", - "@types/node": "^20.17.6", + "@types/node": "^22.9.0", "@types/prismjs": "^1.26.5", "@types/react": "^18.3.12", "@types/react-dom": "^18.3.1", @@ -41,6 +41,6 @@ "typescript": "^5.6.3" }, "volta": { - "node": "20.16.0" + "node": "22.11.0" } } diff --git a/src/markdoc/partials/api/console/cassette-response-list.md b/src/markdoc/partials/api/console/cassette-response-list.md new file mode 100644 index 00000000..5875ac7b --- /dev/null +++ b/src/markdoc/partials/api/console/cassette-response-list.md @@ -0,0 +1,28 @@ +```json {% process=false filename="Response" %} +{ + "object": "list", + "data": [ + { + "id": "9d759f5a-7a1f-443e-a466-6471da1d367b", + "object": "cassette", + "handle": "default", + "name": "Default", + "project": "9c17d63b-96c0-4315-b4dd-e55373ce4ffd", + "parent": null, + "created_at": 1711305486, + "updated_at": 1711305486 + }, + {...}, + {...} + ], + "meta": { + "has_more": false, + "current_page": 1, + "from": 1, + "to": 3, + "total": 3, + "per_page": 10, + "last_page": 1 + } +} +``` diff --git a/src/markdoc/partials/api/console/cassette-response-parameters.md b/src/markdoc/partials/api/console/cassette-response-parameters.md new file mode 100644 index 00000000..73557051 --- /dev/null +++ b/src/markdoc/partials/api/console/cassette-response-parameters.md @@ -0,0 +1,31 @@ +{% parameter name="id" type="string" %} +The unique identifier for this Cassette. +{% /parameter %} + +{% parameter name="object" type="string" %} +This will always contain `cassette` for this endpoint. +{% /parameter %} + +{% parameter name="handle" type="string" %} +The unique handle of the Cassette. The handle is only unique to every Cassette within a project. +{% /parameter %} + +{% parameter name="name" type="string" %} +The Cassette name. +{% /parameter %} + +{% parameter name="project" type="string | object" %} +The ID of the project this Cassette belongs to. +{% /parameter %} + +{% parameter name="parent" type="string | object | null" %} +The parent Cassette, if this Cassette is duplicated. +{% /parameter %} + +{% parameter name="created_at" type="timestamp" %} +The Cassette's created at timestamp. +{% /parameter %} + +{% parameter name="updated_at" type="timestamp" %} +The Cassette's updated at timestamp. +{% /parameter %} diff --git a/src/markdoc/partials/api/console/cassette-response.md b/src/markdoc/partials/api/console/cassette-response.md new file mode 100644 index 00000000..ebfa83e3 --- /dev/null +++ b/src/markdoc/partials/api/console/cassette-response.md @@ -0,0 +1,12 @@ +```json {% process=false filename="Response" %} +{ + "id": "9d759f5a-7a1f-443e-a466-6471da1d367b", + "object": "cassette", + "handle": "default", + "name": "Default", + "project": "9c17d63b-96c0-4315-b4dd-e55373ce4ffd", + "parent": null, + "created_at": 1711305486, + "updated_at": 1711305486 +} +``` diff --git a/src/navigation/api/console.ts b/src/navigation/api/console.ts index 0fb6292d..18e9f270 100644 --- a/src/navigation/api/console.ts +++ b/src/navigation/api/console.ts @@ -41,6 +41,37 @@ export const consoleAPINavigation: APINavigationItem[] = [ }, ], }, + { + title: 'Cassettes', + expandable: false, + items: [ + { + title: 'Create Cassette', + url: '/api/console/cassettes/create', + method: 'POST', + }, + { + title: 'Update Cassette', + url: '/api/console/cassettes/update', + method: 'PATCH', + }, + { + title: 'Retrieve Cassette', + url: '/api/console/cassettes/retrieve', + method: 'GET', + }, + { + title: 'Remove Cassette', + url: '/api/console/cassettes/remove', + method: 'DELETE', + }, + { + title: 'Duplicate Cassette', + url: '/api/console/cassettes/duplicate', + method: 'POST', + }, + ], + }, { title: 'Domains', expandable: false, @@ -157,6 +188,11 @@ export const consoleAPINavigation: APINavigationItem[] = [ url: '/api/console/projects/domains', method: 'GET', }, + { + title: 'List all project Cassettes', + url: '/api/console/projects/cassettes', + method: 'GET', + }, { title: 'Search projects', url: '/api/console/projects/search', diff --git a/src/pages/api-reference/console/cassettes/create.md b/src/pages/api-reference/console/cassettes/create.md new file mode 100644 index 00000000..e7da630e --- /dev/null +++ b/src/pages/api-reference/console/cassettes/create.md @@ -0,0 +1,63 @@ +--- +title: 'Create Cassette' +description: 'Create a Cassette for a project in your agency.' +api: 'POST /v1/agencies/{username}/cassettes' +--- + +{% row %} + +{% column %} +### Body parameters + +{% parameter name="name" type="string" required=true %} +The name of the Cassette. +{% /parameter %} + +{% parameter name="project" type="string" required=true %} +The ID of the project this Cassette will belong to. +{% /parameter %} + +{% parameter name="handle" type="array" required=true %} +The unique handle for the Cassette. +{% /parameter %} + +### Response + +{% partial file="api/console/cassette-response-parameters.md" /%} + +{% /column %} + +{% column sticky="true" %} + +{% code-group %} + +```ts {% process=false filename="Node.js" %} +import Blutui from 'blutui' + +const blutui = new Blutui('ey....') + +blutui.agency('studio').cassettes.create({ + name: 'Default', + project: '99bc147e-966c-4dd0-8def-de817c63cf41', + handle: 'default', +}) +``` + +```bash {% process=false filename="cURL" %} +curl -X POST 'https://api.blutui.com/v1/agencies/studio/cassettes' \ + -H 'Authorization: Bearer ey....' \ + -H 'Content-Type: application/json' + -d $'{ + "name": "Default", + "project": "99bc147e-966c-4dd0-8def-de817c63cf41", + "handle": "default", +}' +``` + +{% /code-group %} + +{% partial file="api/console/cassette-response.md" /%} + +{% /column %} + +{% /row %} diff --git a/src/pages/api-reference/console/cassettes/duplicate.md b/src/pages/api-reference/console/cassettes/duplicate.md new file mode 100644 index 00000000..8805b2f1 --- /dev/null +++ b/src/pages/api-reference/console/cassettes/duplicate.md @@ -0,0 +1,64 @@ +--- +title: 'Duplicate Cassette' +description: 'Duplicate a Cassette for a project your agency.' +api: 'POST /v1/agencies/{username}/cassettes/{id}/duplicate' +--- + +{% row %} + +{% column %} +### Path parameters + +{% parameter name="id" type="string" required="true" %} +The ID of the Cassette to duplicate. +{% /parameter %} + +### Body parameters + +{% parameter name="name" type="string" required=true %} +The name of the Cassette. +{% /parameter %} + +{% parameter name="handle" type="array" required=true %} +The unique handle for the Cassette. +{% /parameter %} + +### Response + +{% partial file="api/console/cassette-response-parameters.md" /%} + +{% /column %} + +{% column sticky="true" %} + +{% code-group %} + +```ts {% process=false filename="Node.js" %} +import Blutui from 'blutui' + +const blutui = new Blutui('ey....') + +blutui.agency('studio').cassettes.duplicate('9d759f5a-7a1f-443e-a466-6471da1d367b', { + name: 'Default', + handle: 'default', +}) +``` + +```bash {% process=false filename="cURL" %} +curl -X POST 'https://api.blutui.com/v1/agencies/studio/cassettes' \ + -H 'Authorization: Bearer ey....' \ + -H 'Content-Type: application/json' + -d $'{ + "name": "Default", + "project": "99bc147e-966c-4dd0-8def-de817c63cf41", + "handle": "default", +}' +``` + +{% /code-group %} + +{% partial file="api/console/cassette-response.md" /%} + +{% /column %} + +{% /row %} diff --git a/src/pages/api-reference/console/cassettes/remove.md b/src/pages/api-reference/console/cassettes/remove.md new file mode 100644 index 00000000..0f93a9aa --- /dev/null +++ b/src/pages/api-reference/console/cassettes/remove.md @@ -0,0 +1,62 @@ +--- +title: 'Remove Cassette' +description: 'Remove a Cassette from a project your agency.' +api: 'DELETE /v1/agencies/{username}/cassettes/{id}' +--- + +{% row %} + +{% column %} +### Path parameters + +{% parameter name="id" type="string" required="true" %} +The ID of the Cassette to remove. +{% /parameter %} + +### Response + +{% parameter name="id" type="string" %} +The unique identifier for this Cassette. +{% /parameter %} + +{% parameter name="object" type="string" %} +This will always contain `cassette` for this endpoint. +{% /parameter %} + +{% parameter name="deleted" type="boolean" %} +Determine if the object was successfully deleted. +{% /parameter %} + +{% /column %} + +{% column sticky="true" %} + +{% code-group %} + +```ts {% process=false filename="Node.js" %} +import Blutui from 'blutui' + +const blutui = new Blutui('ey....') + +blutui.agency('studio').cassettes.remove('9d759f5a-7a1f-443e-a466-6471da1d367b') +``` + +```bash {% process=false filename="cURL" %} +curl -X DELETE 'https://api.blutui.com/v1/agencies/studio/cassettes/9d759f5a-7a1f-443e-a466-6471da1d367b' \ + -H 'Authorization: Bearer ey....' \ + -H 'Content-Type: application/json' +``` + +{% /code-group %} + +```json {% process=false filename="Response" %} +{ + "id": "9d759f5a-7a1f-443e-a466-6471da1d367b", + "object": "cassette", + "deleted": true +} +``` + +{% /column %} + +{% /row %} diff --git a/src/pages/api-reference/console/cassettes/retrieve.md b/src/pages/api-reference/console/cassettes/retrieve.md new file mode 100644 index 00000000..91055090 --- /dev/null +++ b/src/pages/api-reference/console/cassettes/retrieve.md @@ -0,0 +1,52 @@ +--- +title: 'Retrieve Cassette' +description: 'Retrieve a Cassette for a project your agency.' +api: 'GET /v1/agencies/{username}/cassettes/{id}' +--- + +{% row %} + +{% column %} +### Path parameters + +{% parameter name="id" type="string" required="true" %} +The ID of the Cassette to retrieve. +{% /parameter %} + +### Query parameters + +{% parameter name="expand" type="string[]" %} +Expand the response for the given items. Expand array accepts `project`. +{% /parameter %} + +### Response + +{% partial file="api/console/cassette-response-parameters.md" /%} + +{% /column %} + +{% column sticky="true" %} + +{% code-group %} + +```ts {% process=false filename="Node.js" %} +import Blutui from 'blutui' + +const blutui = new Blutui('ey....') + +blutui.agency('studio').cassettes.get('9d759f5a-7a1f-443e-a466-6471da1d367b') +``` + +```bash {% process=false filename="cURL" %} +curl -X GET 'https://api.blutui.com/v1/agencies/studio/cassettes/9d759f5a-7a1f-443e-a466-6471da1d367b' \ + -H 'Authorization: Bearer ey....' \ + -H 'Content-Type: application/json' +``` + +{% /code-group %} + +{% partial file="api/console/cassette-response.md" /%} + +{% /column %} + +{% /row %} diff --git a/src/pages/api-reference/console/cassettes/update.md b/src/pages/api-reference/console/cassettes/update.md new file mode 100644 index 00000000..ae6c3f56 --- /dev/null +++ b/src/pages/api-reference/console/cassettes/update.md @@ -0,0 +1,57 @@ +--- +title: 'Update Cassette' +description: 'Update a Cassette for a project your agency.' +api: 'PATCH /v1/agencies/{username}/cassettes/{id}' +--- + +{% row %} + +{% column %} +### Path parameters + +{% parameter name="id" type="string" required="true" %} +The ID of the Cassette to update. +{% /parameter %} + +### Body parameters + +{% parameter name="name" type="string" required="true" %} +The name of the Cassette. +{% /parameter %} + +### Response + +{% partial file="api/console/cassette-response-parameters.md" /%} + +{% /column %} + +{% column sticky="true" %} + +{% code-group %} + +```ts {% process=false filename="Node.js" %} +import Blutui from 'blutui' + +const blutui = new Blutui('ey....') + +blutui.agency('studio').cassettes.update('9d759f5a-7a1f-443e-a466-6471da1d367b', { + name: 'Development' +}) +``` + +```bash {% process=false filename="cURL" %} +curl -X PATCH 'https://api.blutui.com/v1/agencies/studio/cassettes/9d759f5a-7a1f-443e-a466-6471da1d367b' \ + -H 'Authorization: Bearer ey....' \ + -H 'Content-Type: application/json' + -d $'{ + "name": "Development" +}' +``` + +{% /code-group %} + +{% partial file="api/console/cassette-response.md" /%} + +{% /column %} + +{% /row %} diff --git a/src/pages/api-reference/console/projects/cassettes.md b/src/pages/api-reference/console/projects/cassettes.md new file mode 100644 index 00000000..f3f53d7d --- /dev/null +++ b/src/pages/api-reference/console/projects/cassettes.md @@ -0,0 +1,56 @@ +--- +title: 'List all project Cassettes' +description: 'List all Cassettes for a project in your agency.' +api: 'GET /v1/agencies/{username}/projects/{id}/cassettes' +--- + +{% row %} + +{% column %} +### Path parameters + +{% parameter name="id" type="string" required="true" %} +The ID of the project to retrieve. +{% /parameter %} + +### Query parameters + +{% parameter name="limit" type="integer | default: 10" %} +Limit the number of objects to return, ranging between 1 and 20. +{% /parameter %} + +{% parameter name="page" type="integer | default: 1" %} +The current page used to display the pagination results. +{% /parameter %} + +### Response + +{% partial file="api/console/cassette-response-parameters.md" /%} + +{% /column %} + +{% column sticky="true" %} + +{% code-group %} + +```ts {% process=false filename="Node.js" %} +import Blutui from 'blutui' + +const blutui = new Blutui('ey....') + +blutui.agency('studio').projects.cassettes('9d759f5a-7a1f-443e-a466-6471da1d367b') +``` + +```bash {% process=false filename="cURL" %} +curl -X GET 'https://api.blutui.com/v1/agencies/studio/projects/9d759f5a-7a1f-443e-a466-6471da1d367b/cassettes' \ + -H 'Authorization: Bearer ey....' \ + -H 'Content-Type: application/json' +``` + +{% /code-group %} + +{% partial file="api/console/cassette-response-list.md" /%} + +{% /column %} + +{% /row %}