API-Fiddle

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.

OpenAPI Specification

api-fiddle-api-fiddle-openapi.yml Raw ↑
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.