openapi: 3.1.0 info: title: API-Fiddle API Fiddle API description: >- The API Fiddle API provides programmatic access to the API Fiddle design platform, enabling management of projects, specifications, workspaces, sharing, and export capabilities. It allows developers to automate API design workflows, collaborate on OpenAPI specifications, and integrate API Fiddle into their development pipelines. version: 1.0.0 contact: name: API Fiddle url: https://api-fiddle.com/ servers: - url: https://api.api-fiddle.com/v1 description: Production paths: /projects: get: operationId: listProjects summary: API-Fiddle List projects description: Retrieves a paginated list of projects accessible to the authenticated user. tags: - Projects parameters: - name: limit in: query description: Maximum number of projects to return. schema: type: integer default: 20 - name: offset in: query description: Number of projects to skip for pagination. schema: type: integer default: 0 responses: '200': description: A list of projects. content: application/json: schema: type: object properties: data: type: array items: $ref: '#/components/schemas/Project' total: type: integer limit: type: integer offset: type: integer post: operationId: createProject summary: API-Fiddle Create a project description: Creates a new API design project. tags: - Projects requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/ProjectInput' responses: '201': description: The newly created project. content: application/json: schema: $ref: '#/components/schemas/Project' /projects/{projectId}: get: operationId: getProject summary: API-Fiddle Get a project description: Retrieves a single project by its identifier. tags: - Projects parameters: - $ref: '#/components/parameters/projectId' responses: '200': description: The requested project. content: application/json: schema: $ref: '#/components/schemas/Project' '404': description: Project not found. put: operationId: updateProject summary: API-Fiddle Update a project description: Updates an existing project. tags: - Projects parameters: - $ref: '#/components/parameters/projectId' requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/ProjectInput' responses: '200': description: The updated project. content: application/json: schema: $ref: '#/components/schemas/Project' delete: operationId: deleteProject summary: API-Fiddle Delete a project description: Deletes a project and all associated specifications. tags: - Projects parameters: - $ref: '#/components/parameters/projectId' responses: '204': description: Project deleted successfully. /projects/{projectId}/specifications: get: operationId: listSpecifications summary: API-Fiddle List specifications description: Retrieves all specifications belonging to a project. tags: - Specifications parameters: - $ref: '#/components/parameters/projectId' responses: '200': description: A list of specifications. content: application/json: schema: type: object properties: data: type: array items: $ref: '#/components/schemas/Specification' post: operationId: createSpecification summary: API-Fiddle Create a specification description: Creates a new API specification within a project. tags: - Specifications parameters: - $ref: '#/components/parameters/projectId' requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/SpecificationInput' responses: '201': description: The newly created specification. content: application/json: schema: $ref: '#/components/schemas/Specification' /projects/{projectId}/specifications/{specificationId}: get: operationId: getSpecification summary: API-Fiddle Get a specification description: Retrieves a single specification by its identifier. tags: - Specifications parameters: - $ref: '#/components/parameters/projectId' - $ref: '#/components/parameters/specificationId' responses: '200': description: The requested specification. content: application/json: schema: $ref: '#/components/schemas/Specification' put: operationId: updateSpecification summary: API-Fiddle Update a specification description: Updates an existing specification. tags: - Specifications parameters: - $ref: '#/components/parameters/projectId' - $ref: '#/components/parameters/specificationId' requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/SpecificationInput' responses: '200': description: The updated specification. content: application/json: schema: $ref: '#/components/schemas/Specification' delete: operationId: deleteSpecification summary: API-Fiddle Delete a specification description: Deletes a specification from a project. tags: - Specifications parameters: - $ref: '#/components/parameters/projectId' - $ref: '#/components/parameters/specificationId' responses: '204': description: Specification deleted successfully. /workspaces: get: operationId: listWorkspaces summary: API-Fiddle List workspaces description: Retrieves all workspaces accessible to the authenticated user. tags: - Workspaces responses: '200': description: A list of workspaces. content: application/json: schema: type: object properties: data: type: array items: $ref: '#/components/schemas/Workspace' post: operationId: createWorkspace summary: API-Fiddle Create a workspace description: Creates a new workspace for organizing projects. tags: - Workspaces requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/WorkspaceInput' responses: '201': description: The newly created workspace. content: application/json: schema: $ref: '#/components/schemas/Workspace' /workspaces/{workspaceId}: get: operationId: getWorkspace summary: API-Fiddle Get a workspace description: Retrieves a single workspace by its identifier. tags: - Workspaces parameters: - $ref: '#/components/parameters/workspaceId' responses: '200': description: The requested workspace. content: application/json: schema: $ref: '#/components/schemas/Workspace' put: operationId: updateWorkspace summary: API-Fiddle Update a workspace description: Updates an existing workspace. tags: - Workspaces parameters: - $ref: '#/components/parameters/workspaceId' requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/WorkspaceInput' responses: '200': description: The updated workspace. content: application/json: schema: $ref: '#/components/schemas/Workspace' delete: operationId: deleteWorkspace summary: API-Fiddle Delete a workspace description: Deletes a workspace. tags: - Workspaces parameters: - $ref: '#/components/parameters/workspaceId' responses: '204': description: Workspace deleted successfully. /projects/{projectId}/sharing: get: operationId: listSharing summary: API-Fiddle List sharing settings description: Retrieves the sharing configuration for a project. tags: - Sharing parameters: - $ref: '#/components/parameters/projectId' responses: '200': description: The sharing settings for the project. content: application/json: schema: type: object properties: data: type: array items: $ref: '#/components/schemas/SharingEntry' post: operationId: shareProject summary: API-Fiddle Share a project description: Shares a project with another user or generates a public link. tags: - Sharing parameters: - $ref: '#/components/parameters/projectId' requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/SharingInput' responses: '201': description: The sharing entry created. content: application/json: schema: $ref: '#/components/schemas/SharingEntry' /projects/{projectId}/sharing/{sharingId}: delete: operationId: removeSharing summary: API-Fiddle Remove sharing description: Revokes sharing access for a specific entry. tags: - Sharing parameters: - $ref: '#/components/parameters/projectId' - name: sharingId in: path required: true description: The unique identifier of the sharing entry. schema: type: string responses: '204': description: Sharing entry removed successfully. /projects/{projectId}/export: post: operationId: exportProject summary: API-Fiddle Export a project description: >- Exports a project or specification in the requested format such as OpenAPI YAML, OpenAPI JSON, or other supported formats. tags: - Export parameters: - $ref: '#/components/parameters/projectId' requestBody: required: true content: application/json: schema: type: object properties: format: type: string enum: - openapi-yaml - openapi-json - postman - html description: The export format. specificationId: type: string description: Optional specification to export. If omitted, exports the entire project. required: - format responses: '200': description: The exported content. content: application/json: schema: type: object properties: format: type: string content: type: string description: The exported content as a string. downloadUrl: type: string format: uri description: A temporary URL to download the exported file. components: parameters: projectId: name: projectId in: path required: true description: The unique identifier of the project. schema: type: string specificationId: name: specificationId in: path required: true description: The unique identifier of the specification. schema: type: string workspaceId: name: workspaceId in: path required: true description: The unique identifier of the workspace. schema: type: string schemas: Project: type: object properties: id: type: string description: Unique identifier for the project. name: type: string description: Name of the project. description: type: string description: Description of the project. workspaceId: type: string description: Identifier of the workspace this project belongs to. visibility: type: string enum: - private - public - shared description: Visibility level of the project. createdAt: type: string format: date-time description: Timestamp when the project was created. updatedAt: type: string format: date-time description: Timestamp when the project was last updated. ProjectInput: type: object properties: name: type: string description: Name of the project. description: type: string description: Description of the project. workspaceId: type: string description: Identifier of the workspace to place the project in. visibility: type: string enum: - private - public - shared required: - name Specification: type: object properties: id: type: string description: Unique identifier for the specification. projectId: type: string description: Identifier of the parent project. name: type: string description: Name of the specification. description: type: string description: Description of the specification. version: type: string description: Version label for the specification. format: type: string enum: - openapi-3.0 - openapi-3.1 description: The OpenAPI format version used. content: type: string description: The raw specification content. createdAt: type: string format: date-time updatedAt: type: string format: date-time SpecificationInput: type: object properties: name: type: string description: Name of the specification. description: type: string description: Description of the specification. version: type: string description: Version label. format: type: string enum: - openapi-3.0 - openapi-3.1 content: type: string description: The raw specification content. required: - name Workspace: type: object properties: id: type: string description: Unique identifier for the workspace. name: type: string description: Name of the workspace. description: type: string description: Description of the workspace. ownerId: type: string description: Identifier of the workspace owner. createdAt: type: string format: date-time updatedAt: type: string format: date-time WorkspaceInput: type: object properties: name: type: string description: Name of the workspace. description: type: string description: Description of the workspace. required: - name SharingEntry: type: object properties: id: type: string description: Unique identifier for the sharing entry. projectId: type: string description: Identifier of the shared project. type: type: string enum: - user - link description: Type of sharing. email: type: string format: email description: Email of the user the project is shared with. role: type: string enum: - viewer - editor - admin description: Role granted to the recipient. createdAt: type: string format: date-time SharingInput: type: object properties: type: type: string enum: - user - link email: type: string format: email description: Email of the user to share with. Required when type is user. role: type: string enum: - viewer - editor - admin required: - type - role securitySchemes: bearerAuth: type: http scheme: bearer bearerFormat: JWT security: - bearerAuth: [] tags: - name: Export description: Export projects and specifications. - name: Projects description: Manage API design projects. - name: Sharing description: Share projects with other users. - name: Specifications description: Manage API specifications within projects. - name: Workspaces description: Organize projects into workspaces.