openapi: 3.0.3 info: title: Paperspace Projects API version: v1 description: | Projects are the top-level organizing container in Paperspace — they own deployments, models, secrets, tags, activity feeds, and collaborator lists. Authenticate with a team-scoped API key as `Authorization: Bearer $API_TOKEN`. servers: - url: https://api.paperspace.com/v1 description: Production security: - bearerAuth: [] tags: - name: Projects - name: Collaborators - name: Secrets - name: Tags - name: Activity paths: /projects: get: tags: [Projects] operationId: listProjects summary: List Projects description: Lists projects with pagination and sorting support. parameters: - $ref: '#/components/parameters/After' - $ref: '#/components/parameters/Limit' - $ref: '#/components/parameters/OrderBy' - $ref: '#/components/parameters/Order' responses: '200': description: Project list. content: application/json: schema: $ref: '#/components/schemas/ProjectList' post: tags: [Projects] operationId: createProject summary: Create Project description: Creates a new project with the specified name. requestBody: required: true content: application/json: schema: type: object required: [name] properties: name: type: string description: type: string responses: '201': description: Project created. content: application/json: schema: $ref: '#/components/schemas/Project' /projects/{id}: parameters: - $ref: '#/components/parameters/ProjectId' get: tags: [Projects] operationId: getProject summary: Get Project description: Gets a project by its ID. responses: '200': description: Project. content: application/json: schema: $ref: '#/components/schemas/Project' put: tags: [Projects] operationId: updateProject summary: Update Project description: Updates a project's name or description. requestBody: required: true content: application/json: schema: type: object properties: name: type: string description: type: string responses: '200': description: Updated project. content: application/json: schema: $ref: '#/components/schemas/Project' delete: tags: [Projects] operationId: deleteProject summary: Delete Project description: Deletes a project and its associated configuration. responses: '204': description: Deleted. /projects/{id}/activity: parameters: - $ref: '#/components/parameters/ProjectId' get: tags: [Activity] operationId: listProjectActivity summary: List Project Activity description: Lists project activity events with filtering and pagination options. parameters: - in: query name: type schema: type: string - $ref: '#/components/parameters/After' - $ref: '#/components/parameters/Limit' responses: '200': description: Activity list. content: application/json: schema: type: array items: $ref: '#/components/schemas/ActivityEvent' /projects/{id}/collaborators: parameters: - $ref: '#/components/parameters/ProjectId' get: tags: [Collaborators] operationId: listProjectCollaborators summary: List Project Collaborators description: Fetches a list of collaborators for a project. responses: '200': description: Collaborator list. content: application/json: schema: type: array items: $ref: '#/components/schemas/Collaborator' post: tags: [Collaborators] operationId: addProjectCollaborator summary: Add Project Collaborator description: Adds a new collaborator to a project. requestBody: required: true content: application/json: schema: type: object required: [userId] properties: userId: type: string role: type: string enum: [admin, member, viewer] responses: '201': description: Collaborator added. content: application/json: schema: $ref: '#/components/schemas/Collaborator' /projects/{id}/collaborators/{userId}: parameters: - $ref: '#/components/parameters/ProjectId' - in: path name: userId required: true schema: type: string delete: tags: [Collaborators] operationId: removeProjectCollaborator summary: Remove Project Collaborator description: Removes a collaborator from a project. responses: '204': description: Removed. /projects/{id}/secrets: parameters: - $ref: '#/components/parameters/ProjectId' get: tags: [Secrets] operationId: listProjectSecrets summary: List Project Secrets description: Fetches a list of secrets for a project. responses: '200': description: Secret list (names only). content: application/json: schema: type: array items: $ref: '#/components/schemas/Secret' post: tags: [Secrets] operationId: createProjectSecret summary: Create Project Secret description: Creates a new secret for a project. requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/SecretCreate' responses: '201': description: Secret created. content: application/json: schema: $ref: '#/components/schemas/Secret' /projects/{id}/secrets/{name}: parameters: - $ref: '#/components/parameters/ProjectId' - in: path name: name required: true schema: type: string get: tags: [Secrets] operationId: getProjectSecret summary: Get Project Secret description: Fetches a secret for a project (does not return the value). responses: '200': description: Secret. content: application/json: schema: $ref: '#/components/schemas/Secret' patch: tags: [Secrets] operationId: updateProjectSecret summary: Update Project Secret description: Updates the value of a secret for a project. requestBody: required: true content: application/json: schema: type: object required: [value] properties: value: type: string responses: '200': description: Updated secret. content: application/json: schema: $ref: '#/components/schemas/Secret' delete: tags: [Secrets] operationId: deleteProjectSecret summary: Delete Project Secret description: Deletes a secret from a project. responses: '204': description: Deleted. /projects/{id}/tags: parameters: - $ref: '#/components/parameters/ProjectId' get: tags: [Tags] operationId: listProjectTags summary: List Project Tags description: Fetches a list of tags for a project. responses: '200': description: Tag list. content: application/json: schema: type: array items: type: string post: tags: [Tags] operationId: addProjectTag summary: Add Project Tag description: Adds a tag to a project. requestBody: required: true content: application/json: schema: type: object required: [name] properties: name: type: string responses: '201': description: Tag added. delete: tags: [Tags] operationId: removeProjectTag summary: Remove Project Tag description: Removes a tag from a project by name. parameters: - in: query name: name required: true schema: type: string responses: '204': description: Removed. /projects/{id}/models: parameters: - $ref: '#/components/parameters/ProjectId' get: tags: [Projects] operationId: listProjectModels summary: List Project Models description: Fetches a list of models for a project. responses: '200': description: Model list. content: application/json: schema: type: array items: type: object properties: id: type: string name: type: string /projects/{id}/models/{modelId}: parameters: - $ref: '#/components/parameters/ProjectId' - in: path name: modelId required: true schema: type: string post: tags: [Projects] operationId: addProjectModel summary: Add Model to Project description: Associates an existing model with a project. responses: '201': description: Linked. delete: tags: [Projects] operationId: removeProjectModel summary: Remove Model From Project description: Removes a model from a project. responses: '204': description: Removed. components: securitySchemes: bearerAuth: type: http scheme: bearer bearerFormat: api-key parameters: ProjectId: in: path name: id required: true schema: type: string After: in: query name: after schema: type: string Limit: in: query name: limit schema: type: integer OrderBy: in: query name: orderBy schema: type: string Order: in: query name: order schema: type: string enum: [asc, desc] schemas: Project: type: object properties: id: type: string name: type: string description: type: string teamId: type: string dtCreated: type: string format: date-time ProjectList: type: object properties: items: type: array items: $ref: '#/components/schemas/Project' hasMore: type: boolean nextPage: type: string Collaborator: type: object properties: userId: type: string email: type: string role: type: string projectId: type: string Secret: type: object properties: name: type: string dtCreated: type: string format: date-time dtModified: type: string format: date-time SecretCreate: type: object required: [name, value] properties: name: type: string value: type: string ActivityEvent: type: object properties: id: type: string type: type: string message: type: string userId: type: string dtCreated: type: string format: date-time