{
  "opencollection": "1.0.0",
  "info": {
    "name": "Cube Agents Canvases API",
    "version": "1.0.0 (1.0)"
  },
  "items": [
    {
      "info": {
        "name": "Canvases",
        "type": "folder"
      },
      "items": [
        {
          "info": {
            "name": "List all canvases.",
            "type": "http"
          },
          "http": {
            "method": "GET",
            "url": "https://api.cubesoftware.com/canvases",
            "params": [
              {
                "name": "source",
                "value": "",
                "type": "query",
                "description": "Filters the results to canvases with the given source.\n\n- By default, only `WORKSPACE` canvases are returned.\n- Use `?source=DECKS` to list only Decks-created canvases."
              },
              {
                "name": "widget_type",
                "value": "",
                "type": "query",
                "description": "Filters the results to canvases that include **at least one widget** of the given type.\n\n- If omitted, no widget-type filtering is applied."
              }
            ],
            "auth": {
              "type": "oauth2",
              "flow": "authorization_code",
              "authorizationUrl": "https://portal.cubesoftware.com/o/authorize/",
              "accessTokenUrl": "https://api.cubesoftware.com/o/token/",
              "credentials": {
                "clientId": "{{clientId}}",
                "clientSecret": "{{clientSecret}}"
              }
            }
          },
          "docs": "List of all canvases available to the authenticated user company.\n\n- Results are ordered by creation date, newest first.\n- Each canvas includes basic metadata and an `is_liked` flag indicating whether the current user has liked it.\n- For performance reasons, related fields such as `tabs` and `shared_with` are **not included** in list responses."
        },
        {
          "info": {
            "name": "Create a new canvas.",
            "type": "http"
          },
          "http": {
            "method": "POST",
            "url": "https://api.cubesoftware.com/canvases",
            "body": {
              "type": "json",
              "data": "{}"
            },
            "auth": {
              "type": "oauth2",
              "flow": "authorization_code",
              "authorizationUrl": "https://portal.cubesoftware.com/o/authorize/",
              "accessTokenUrl": "https://api.cubesoftware.com/o/token/",
              "credentials": {
                "clientId": "{{clientId}}",
                "clientSecret": "{{clientSecret}}"
              }
            }
          },
          "docs": "Create a new canvas under the authenticated user company.\n\n- Required fields typically include `name`, and optionally layout or metadata fields.\n- The response includes the full representation of the newly created canvas."
        },
        {
          "info": {
            "name": "Create a new canvas tab.",
            "type": "http"
          },
          "http": {
            "method": "POST",
            "url": "https://api.cubesoftware.com/canvases/:canvas_pk/tabs",
            "params": [
              {
                "name": "canvas_pk",
                "value": "",
                "type": "path"
              }
            ],
            "body": {
              "type": "json",
              "data": "{}"
            },
            "auth": {
              "type": "oauth2",
              "flow": "authorization_code",
              "authorizationUrl": "https://portal.cubesoftware.com/o/authorize/",
              "accessTokenUrl": "https://api.cubesoftware.com/o/token/",
              "credentials": {
                "clientId": "{{clientId}}",
                "clientSecret": "{{clientSecret}}"
              }
            }
          },
          "docs": "Create a new canvas tab."
        },
        {
          "info": {
            "name": "Update specific fields of a canvas tab.",
            "type": "http"
          },
          "http": {
            "method": "PATCH",
            "url": "https://api.cubesoftware.com/canvases/:canvas_pk/tabs/:id",
            "params": [
              {
                "name": "canvas_pk",
                "value": "",
                "type": "path"
              },
              {
                "name": "id",
                "value": "",
                "type": "path"
              }
            ],
            "body": {
              "type": "json",
              "data": "{}"
            },
            "auth": {
              "type": "oauth2",
              "flow": "authorization_code",
              "authorizationUrl": "https://portal.cubesoftware.com/o/authorize/",
              "accessTokenUrl": "https://api.cubesoftware.com/o/token/",
              "credentials": {
                "clientId": "{{clientId}}",
                "clientSecret": "{{clientSecret}}"
              }
            }
          },
          "docs": "Update specific fields of a canvas tab."
        },
        {
          "info": {
            "name": "Delete a canvas tab.",
            "type": "http"
          },
          "http": {
            "method": "DELETE",
            "url": "https://api.cubesoftware.com/canvases/:canvas_pk/tabs/:id",
            "params": [
              {
                "name": "canvas_pk",
                "value": "",
                "type": "path"
              },
              {
                "name": "id",
                "value": "",
                "type": "path"
              }
            ],
            "auth": {
              "type": "oauth2",
              "flow": "authorization_code",
              "authorizationUrl": "https://portal.cubesoftware.com/o/authorize/",
              "accessTokenUrl": "https://api.cubesoftware.com/o/token/",
              "credentials": {
                "clientId": "{{clientId}}",
                "clientSecret": "{{clientSecret}}"
              }
            }
          },
          "docs": "Delete a canvas tab."
        },
        {
          "info": {
            "name": "Associate widgets with a canvas tab.",
            "type": "http"
          },
          "http": {
            "method": "PUT",
            "url": "https://api.cubesoftware.com/canvases/:canvas_pk/tabs/:id/layout",
            "params": [
              {
                "name": "canvas_pk",
                "value": "",
                "type": "path"
              },
              {
                "name": "id",
                "value": "",
                "type": "path"
              }
            ],
            "body": {
              "type": "json",
              "data": "{}"
            },
            "auth": {
              "type": "oauth2",
              "flow": "authorization_code",
              "authorizationUrl": "https://portal.cubesoftware.com/o/authorize/",
              "accessTokenUrl": "https://api.cubesoftware.com/o/token/",
              "credentials": {
                "clientId": "{{clientId}}",
                "clientSecret": "{{clientSecret}}"
              }
            }
          },
          "docs": "Associate widgets with a canvas tab."
        },
        {
          "info": {
            "name": "Retrieve a specific canvas",
            "type": "http"
          },
          "http": {
            "method": "GET",
            "url": "https://api.cubesoftware.com/canvases/:id",
            "params": [
              {
                "name": "id",
                "value": "",
                "type": "path"
              }
            ],
            "auth": {
              "type": "oauth2",
              "flow": "authorization_code",
              "authorizationUrl": "https://portal.cubesoftware.com/o/authorize/",
              "accessTokenUrl": "https://api.cubesoftware.com/o/token/",
              "credentials": {
                "clientId": "{{clientId}}",
                "clientSecret": "{{clientSecret}}"
              }
            }
          },
          "docs": "Retrieve details of a specific canvas by ID.\n\n- Includes all fields, including `tabs` and `shared_with` data.\n- This endpoint is intended for viewing a single canvas along with its associated tabs and widgets."
        },
        {
          "info": {
            "name": "Partially update a canvas by ID.",
            "type": "http"
          },
          "http": {
            "method": "PATCH",
            "url": "https://api.cubesoftware.com/canvases/:id",
            "params": [
              {
                "name": "id",
                "value": "",
                "type": "path"
              }
            ],
            "body": {
              "type": "json",
              "data": "{}"
            },
            "auth": {
              "type": "oauth2",
              "flow": "authorization_code",
              "authorizationUrl": "https://portal.cubesoftware.com/o/authorize/",
              "accessTokenUrl": "https://api.cubesoftware.com/o/token/",
              "credentials": {
                "clientId": "{{clientId}}",
                "clientSecret": "{{clientSecret}}"
              }
            }
          },
          "docs": "Update one or more editable fields of an existing canvas.\n\n- Only the provided fields will be modified.\n- Non-editable fields (such as `id`, `company_id`, and timestamps) are ignored if included.\n- Returns the updated canvas representation."
        },
        {
          "info": {
            "name": "Delete a canvas.",
            "type": "http"
          },
          "http": {
            "method": "DELETE",
            "url": "https://api.cubesoftware.com/canvases/:id",
            "params": [
              {
                "name": "id",
                "value": "",
                "type": "path"
              }
            ],
            "auth": {
              "type": "oauth2",
              "flow": "authorization_code",
              "authorizationUrl": "https://portal.cubesoftware.com/o/authorize/",
              "accessTokenUrl": "https://api.cubesoftware.com/o/token/",
              "credentials": {
                "clientId": "{{clientId}}",
                "clientSecret": "{{clientSecret}}"
              }
            }
          },
          "docs": "Permanently delete a canvas by ID."
        },
        {
          "info": {
            "name": "Duplicate a canvas.",
            "type": "http"
          },
          "http": {
            "method": "POST",
            "url": "https://api.cubesoftware.com/canvases/:id/duplicate",
            "params": [
              {
                "name": "id",
                "value": "",
                "type": "path"
              }
            ],
            "body": {
              "type": "json",
              "data": "{}"
            },
            "auth": {
              "type": "oauth2",
              "flow": "authorization_code",
              "authorizationUrl": "https://portal.cubesoftware.com/o/authorize/",
              "accessTokenUrl": "https://api.cubesoftware.com/o/token/",
              "credentials": {
                "clientId": "{{clientId}}",
                "clientSecret": "{{clientSecret}}"
              }
            }
          },
          "docs": "Duplicate a canvas. The new canvas will be created with a new name and a copy of the layout."
        },
        {
          "info": {
            "name": "Like a canvas",
            "type": "http"
          },
          "http": {
            "method": "POST",
            "url": "https://api.cubesoftware.com/canvases/:id/like",
            "params": [
              {
                "name": "id",
                "value": "",
                "type": "path"
              }
            ],
            "body": {
              "type": "json",
              "data": "{}"
            },
            "auth": {
              "type": "oauth2",
              "flow": "authorization_code",
              "authorizationUrl": "https://portal.cubesoftware.com/o/authorize/",
              "accessTokenUrl": "https://api.cubesoftware.com/o/token/",
              "credentials": {
                "clientId": "{{clientId}}",
                "clientSecret": "{{clientSecret}}"
              }
            }
          },
          "docs": "Like a canvas."
        },
        {
          "info": {
            "name": "Undo a canvas like.",
            "type": "http"
          },
          "http": {
            "method": "DELETE",
            "url": "https://api.cubesoftware.com/canvases/:id/like",
            "params": [
              {
                "name": "id",
                "value": "",
                "type": "path"
              }
            ],
            "auth": {
              "type": "oauth2",
              "flow": "authorization_code",
              "authorizationUrl": "https://portal.cubesoftware.com/o/authorize/",
              "accessTokenUrl": "https://api.cubesoftware.com/o/token/",
              "credentials": {
                "clientId": "{{clientId}}",
                "clientSecret": "{{clientSecret}}"
              }
            }
          },
          "docs": "Undo a canvas like."
        },
        {
          "info": {
            "name": "List all widgets.",
            "type": "http"
          },
          "http": {
            "method": "GET",
            "url": "https://api.cubesoftware.com/canvases/widgets",
            "auth": {
              "type": "oauth2",
              "flow": "authorization_code",
              "authorizationUrl": "https://portal.cubesoftware.com/o/authorize/",
              "accessTokenUrl": "https://api.cubesoftware.com/o/token/",
              "credentials": {
                "clientId": "{{clientId}}",
                "clientSecret": "{{clientSecret}}"
              }
            }
          },
          "docs": "List all widgets."
        },
        {
          "info": {
            "name": "Create a new widget.",
            "type": "http"
          },
          "http": {
            "method": "POST",
            "url": "https://api.cubesoftware.com/canvases/widgets",
            "body": {
              "type": "json",
              "data": "{}"
            },
            "auth": {
              "type": "oauth2",
              "flow": "authorization_code",
              "authorizationUrl": "https://portal.cubesoftware.com/o/authorize/",
              "accessTokenUrl": "https://api.cubesoftware.com/o/token/",
              "credentials": {
                "clientId": "{{clientId}}",
                "clientSecret": "{{clientSecret}}"
              }
            }
          },
          "docs": "Create a new widget."
        },
        {
          "info": {
            "name": "Retrieve details of a specific widget.",
            "type": "http"
          },
          "http": {
            "method": "GET",
            "url": "https://api.cubesoftware.com/canvases/widgets/:id",
            "params": [
              {
                "name": "id",
                "value": "",
                "type": "path"
              }
            ],
            "auth": {
              "type": "oauth2",
              "flow": "authorization_code",
              "authorizationUrl": "https://portal.cubesoftware.com/o/authorize/",
              "accessTokenUrl": "https://api.cubesoftware.com/o/token/",
              "credentials": {
                "clientId": "{{clientId}}",
                "clientSecret": "{{clientSecret}}"
              }
            }
          },
          "docs": "Retrieve details of a specific widget."
        },
        {
          "info": {
            "name": "Update specific fields of a widget.",
            "type": "http"
          },
          "http": {
            "method": "PATCH",
            "url": "https://api.cubesoftware.com/canvases/widgets/:id",
            "params": [
              {
                "name": "id",
                "value": "",
                "type": "path"
              }
            ],
            "body": {
              "type": "json",
              "data": "{}"
            },
            "auth": {
              "type": "oauth2",
              "flow": "authorization_code",
              "authorizationUrl": "https://portal.cubesoftware.com/o/authorize/",
              "accessTokenUrl": "https://api.cubesoftware.com/o/token/",
              "credentials": {
                "clientId": "{{clientId}}",
                "clientSecret": "{{clientSecret}}"
              }
            }
          },
          "docs": "Update specific fields of a widget."
        },
        {
          "info": {
            "name": "canvases_widgets_destroy",
            "type": "http"
          },
          "http": {
            "method": "DELETE",
            "url": "https://api.cubesoftware.com/canvases/widgets/:id",
            "params": [
              {
                "name": "id",
                "value": "",
                "type": "path"
              }
            ],
            "auth": {
              "type": "oauth2",
              "flow": "authorization_code",
              "authorizationUrl": "https://portal.cubesoftware.com/o/authorize/",
              "accessTokenUrl": "https://api.cubesoftware.com/o/token/",
              "credentials": {
                "clientId": "{{clientId}}",
                "clientSecret": "{{clientSecret}}"
              }
            }
          },
          "docs": "This is a shortcut class that will include all 6 resourceful actions part of the DRF ViewSets:\n- list()\n- retrieve()\n- create()\n- update()\n- partial_update()\n- destroy()\n\nIf you do not want to expose all 6 of these in your ViewSet, then use the CubeAuthenticatedViewSet and add the\nappropriate mixins to it (see rest_framework.mixins). This will allow the api to behave appropriately and block\nrequests to unprocessable endpoints. Furthermore, it will make the drf_spectacular documentation be genera"
        },
        {
          "info": {
            "name": "Generate a screenshot of a widget component.",
            "type": "http"
          },
          "http": {
            "method": "POST",
            "url": "https://api.cubesoftware.com/canvases/widgets/:id/render",
            "params": [
              {
                "name": "id",
                "value": "",
                "type": "path"
              }
            ],
            "body": {
              "type": "json",
              "data": "{}"
            },
            "auth": {
              "type": "oauth2",
              "flow": "authorization_code",
              "authorizationUrl": "https://portal.cubesoftware.com/o/authorize/",
              "accessTokenUrl": "https://api.cubesoftware.com/o/token/",
              "credentials": {
                "clientId": "{{clientId}}",
                "clientSecret": "{{clientSecret}}"
              }
            }
          },
          "docs": "Generates a PNG screenshot of the widget component by rendering it in a headless browser.\n\n- The screenshot is uploaded to S3 for record keeping.\n- Returns the PNG image directly.\n- Optional rendering parameters can be provided in the request body."
        }
      ]
    }
  ],
  "bundled": true
}