openapi: 3.0.0
info:
  title: Infisical API
  description: List of all available APIs that can be consumed
  version: 1.0.0
servers:
  - url: https://infisical.com
    description: Production server
  - url: http://localhost:8080
    description: Local server
paths:
  /api/v1/secret/{secretId}/secret-versions:
    get:
      summary: Return secret versions
      description: Return secret versions
      parameters:
        - name: secretId
          in: path
          required: true
          schema:
            type: string
          description: ID of secret
        - name: offset
          description: Number of versions to skip
          required: false
          in: query
          schema:
            type: string
        - name: limit
          description: Maximum number of versions to return
          required: false
          in: query
          schema:
            type: string
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  secretVersions:
                    type: array
                    items:
                      $ref: '#/components/schemas/SecretVersion'
                    description: Secret versions
        '400':
          description: Bad Request
      security:
        - apiKeyAuth: []
  /api/v1/secret/{secretId}/secret-versions/rollback:
    post:
      summary: Roll back secret to a version.
      description: Roll back secret to a version.
      parameters:
        - name: secretId
          in: path
          required: true
          schema:
            type: string
          description: ID of secret
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  secret:
                    type: object
                    $ref: '#/components/schemas/Secret'
                    description: Secret rolled back to
        '400':
          description: Bad Request
      security:
        - apiKeyAuth: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                version:
                  type: integer
                  description: Version of secret to roll back to
  /api/v1/secret-snapshot/{secretSnapshotId}:
    get:
      description: ''
      parameters:
        - name: secretSnapshotId
          in: path
          required: true
          schema:
            type: string
      responses:
        '200':
          description: OK
        '400':
          description: Bad Request
  /api/v1/workspace/{workspaceId}/secret-snapshots:
    get:
      summary: Return project secret snapshot ids
      description: Return project secret snapshots ids
      parameters:
        - name: workspaceId
          in: path
          required: true
          schema:
            type: string
          description: ID of project
        - name: offset
          description: Number of secret snapshots to skip
          required: false
          in: query
          schema:
            type: string
        - name: limit
          description: Maximum number of secret snapshots to return
          required: false
          in: query
          schema:
            type: string
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  secretSnapshots:
                    type: array
                    items:
                      $ref: '#/components/schemas/SecretSnapshot'
                    description: Project secret snapshots
        '400':
          description: Bad Request
      security:
        - apiKeyAuth: []
  /api/v1/workspace/{workspaceId}/secret-snapshots/count:
    get:
      description: ''
      parameters:
        - name: workspaceId
          in: path
          required: true
          schema:
            type: string
      responses:
        '200':
          description: OK
        '400':
          description: Bad Request
  /api/v1/workspace/{workspaceId}/secret-snapshots/rollback:
    post:
      summary: >-
        Roll back project secrets to those captured in a secret snapshot
        version.
      description: >-
        Roll back project secrets to those captured in a secret snapshot
        version.
      parameters:
        - name: workspaceId
          in: path
          required: true
          schema:
            type: string
          description: ID of project
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  secrets:
                    type: array
                    items:
                      $ref: '#/components/schemas/Secret'
                    description: Secrets rolled back to
        '400':
          description: Bad Request
      security:
        - apiKeyAuth: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                version:
                  type: integer
                  description: Version of secret snapshot to roll back to
  /api/v1/workspace/{workspaceId}/logs:
    get:
      summary: Return project (audit) logs
      description: Return project (audit) logs
      parameters:
        - name: workspaceId
          in: path
          required: true
          schema:
            type: string
          description: ID of project
        - name: userId
          description: ID of project member
          required: false
          in: query
          schema:
            type: string
        - name: offset
          description: Number of logs to skip
          required: false
          in: query
          schema:
            type: string
        - name: limit
          description: Maximum number of logs to return
          required: false
          in: query
          schema:
            type: string
        - name: sortBy
          description: Order to sort the logs by
          schema:
            type: string
            enum:
              - oldest
              - recent
          required: false
          in: query
        - name: actionNames
          description: Names of log actions (comma-separated)
          required: false
          in: query
          schema:
            type: string
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  logs:
                    type: array
                    items:
                      $ref: '#/components/schemas/Log'
                    description: Project logs
        '400':
          description: Bad Request
      security:
        - apiKeyAuth: []
  /api/v1/action/{actionId}:
    get:
      description: ''
      parameters:
        - name: actionId
          in: path
          required: true
          schema:
            type: string
      responses:
        '200':
          description: OK
  /api/v1/signup/email/signup:
    post:
      description: ''
      parameters: []
      responses:
        '200':
          description: OK
        '400':
          description: Bad Request
        '403':
          description: Forbidden
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                email:
                  example: any
  /api/v1/signup/email/verify:
    post:
      description: ''
      parameters: []
      responses:
        '200':
          description: OK
        '400':
          description: Bad Request
        '403':
          description: Forbidden
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                email:
                  example: any
                code:
                  example: any
  /api/v1/signup/complete-account/signup:
    post:
      description: ''
      parameters: []
      responses:
        '200':
          description: OK
        '400':
          description: Bad Request
        '403':
          description: Forbidden
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                email:
                  example: any
                firstName:
                  example: any
                lastName:
                  example: any
                publicKey:
                  example: any
                encryptedPrivateKey:
                  example: any
                iv:
                  example: any
                tag:
                  example: any
                salt:
                  example: any
                verifier:
                  example: any
                organizationName:
                  example: any
  /api/v1/signup/complete-account/invite:
    post:
      description: ''
      parameters: []
      responses:
        '200':
          description: OK
        '400':
          description: Bad Request
        '403':
          description: Forbidden
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                email:
                  example: any
                firstName:
                  example: any
                lastName:
                  example: any
                publicKey:
                  example: any
                encryptedPrivateKey:
                  example: any
                iv:
                  example: any
                tag:
                  example: any
                salt:
                  example: any
                verifier:
                  example: any
  /api/v1/auth/token:
    post:
      description: ''
      parameters: []
      responses:
        '200':
          description: OK
        '400':
          description: Bad Request
  /api/v1/auth/login1:
    post:
      description: ''
      parameters: []
      responses:
        '200':
          description: OK
        '400':
          description: Bad Request
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                email:
                  example: any
                clientPublicKey:
                  example: any
  /api/v1/auth/login2:
    post:
      description: ''
      parameters: []
      responses:
        '200':
          description: OK
        '400':
          description: Bad Request
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                email:
                  example: any
                clientProof:
                  example: any
  /api/v1/auth/logout:
    post:
      description: ''
      parameters: []
      responses:
        '200':
          description: OK
        '400':
          description: Bad Request
  /api/v1/auth/checkAuth:
    post:
      description: ''
      parameters: []
      responses:
        '200':
          description: OK
  /api/v1/bot/{workspaceId}:
    get:
      description: ''
      parameters:
        - name: workspaceId
          in: path
          required: true
          schema:
            type: string
      responses:
        '200':
          description: OK
        '400':
          description: Bad Request
  /api/v1/bot/{botId}/active:
    patch:
      description: ''
      parameters:
        - name: botId
          in: path
          required: true
          schema:
            type: string
      responses:
        '200':
          description: OK
        '400':
          description: Bad Request
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                isActive:
                  example: any
                botKey:
                  example: any
  /api/v1/user/:
    get:
      description: ''
      parameters: []
      responses:
        '200':
          description: OK
  /api/v1/user-action/:
    post:
      description: ''
      parameters: []
      responses:
        '200':
          description: OK
        '400':
          description: Bad Request
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                action:
                  example: any
    get:
      description: ''
      parameters:
        - name: action
          in: query
          schema:
            type: string
      responses:
        '200':
          description: OK
        '400':
          description: Bad Request
  /api/v1/organization/:
    get:
      description: ''
      parameters: []
      responses:
        '200':
          description: OK
        '400':
          description: Bad Request
    post:
      description: ''
      parameters: []
      responses:
        '200':
          description: OK
        '400':
          description: Bad Request
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                organizationName:
                  example: any
  /api/v1/organization/{organizationId}:
    get:
      description: ''
      parameters:
        - name: organizationId
          in: path
          required: true
          schema:
            type: string
      responses:
        '200':
          description: OK
        '400':
          description: Bad Request
  /api/v1/organization/{organizationId}/users:
    get:
      description: ''
      parameters:
        - name: organizationId
          in: path
          required: true
          schema:
            type: string
      responses:
        '200':
          description: OK
        '400':
          description: Bad Request
  /api/v1/organization/{organizationId}/my-workspaces:
    get:
      description: ''
      parameters:
        - name: organizationId
          in: path
          required: true
          schema:
            type: string
      responses:
        '200':
          description: OK
        '400':
          description: Bad Request
  /api/v1/organization/{organizationId}/name:
    patch:
      description: ''
      parameters:
        - name: organizationId
          in: path
          required: true
          schema:
            type: string
      responses:
        '200':
          description: OK
        '400':
          description: Bad Request
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                name:
                  example: any
  /api/v1/organization/{organizationId}/incidentContactOrg:
    get:
      description: ''
      parameters:
        - name: organizationId
          in: path
          required: true
          schema:
            type: string
      responses:
        '200':
          description: OK
        '400':
          description: Bad Request
    post:
      description: ''
      parameters:
        - name: organizationId
          in: path
          required: true
          schema:
            type: string
      responses:
        '200':
          description: OK
        '400':
          description: Bad Request
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                email:
                  example: any
    delete:
      description: ''
      parameters:
        - name: organizationId
          in: path
          required: true
          schema:
            type: string
      responses:
        '200':
          description: OK
        '400':
          description: Bad Request
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                email:
                  example: any
  /api/v1/organization/{organizationId}/customer-portal-session:
    post:
      description: ''
      parameters:
        - name: organizationId
          in: path
          required: true
          schema:
            type: string
      responses:
        '200':
          description: OK
        '400':
          description: Bad Request
  /api/v1/organization/{organizationId}/subscriptions:
    get:
      description: ''
      parameters:
        - name: organizationId
          in: path
          required: true
          schema:
            type: string
      responses:
        '200':
          description: OK
        '400':
          description: Bad Request
  /api/v1/workspace/{workspaceId}/keys:
    get:
      description: ''
      parameters:
        - name: workspaceId
          in: path
          required: true
          schema:
            type: string
      responses:
        '200':
          description: OK
        '400':
          description: Bad Request
  /api/v1/workspace/{workspaceId}/users:
    get:
      description: ''
      parameters:
        - name: workspaceId
          in: path
          required: true
          schema:
            type: string
      responses:
        '200':
          description: OK
        '400':
          description: Bad Request
  /api/v1/workspace/:
    get:
      description: ''
      parameters: []
      responses:
        '200':
          description: OK
        '400':
          description: Bad Request
    post:
      description: ''
      parameters: []
      responses:
        '200':
          description: OK
        '400':
          description: Bad Request
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                workspaceName:
                  example: any
                organizationId:
                  example: any
  /api/v1/workspace/{workspaceId}:
    get:
      description: ''
      parameters:
        - name: workspaceId
          in: path
          required: true
          schema:
            type: string
      responses:
        '200':
          description: OK
        '400':
          description: Bad Request
    delete:
      description: ''
      parameters:
        - name: workspaceId
          in: path
          required: true
          schema:
            type: string
      responses:
        '200':
          description: OK
        '400':
          description: Bad Request
  /api/v1/workspace/{workspaceId}/name:
    post:
      description: ''
      parameters:
        - name: workspaceId
          in: path
          required: true
          schema:
            type: string
      responses:
        '200':
          description: OK
        '400':
          description: Bad Request
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                name:
                  example: any
  /api/v1/workspace/{workspaceId}/invite-signup:
    post:
      description: ''
      parameters:
        - name: workspaceId
          in: path
          required: true
          schema:
            type: string
      responses:
        '200':
          description: OK
        '400':
          description: Bad Request
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                email:
                  example: any
  /api/v1/workspace/{workspaceId}/integrations:
    get:
      description: ''
      parameters:
        - name: workspaceId
          in: path
          required: true
          schema:
            type: string
      responses:
        '200':
          description: OK
        '400':
          description: Bad Request
  /api/v1/workspace/{workspaceId}/authorizations:
    get:
      description: ''
      parameters:
        - name: workspaceId
          in: path
          required: true
          schema:
            type: string
      responses:
        '200':
          description: OK
        '400':
          description: Bad Request
  /api/v1/workspace/{workspaceId}/service-tokens:
    get:
      description: ''
      parameters:
        - name: workspaceId
          in: path
          required: true
          schema:
            type: string
      responses:
        '200':
          description: OK
        '400':
          description: Bad Request
  /api/v1/membership-org/membershipOrg/{membershipOrgId}/change-role:
    post:
      description: ''
      parameters:
        - name: membershipOrgId
          in: path
          required: true
          schema:
            type: string
      responses:
        '200':
          description: OK
  /api/v1/membership-org/{membershipOrgId}:
    delete:
      description: ''
      parameters:
        - name: membershipOrgId
          in: path
          required: true
          schema:
            type: string
      responses:
        '400':
          description: Bad Request
  /api/v1/membership/{workspaceId}/connect:
    get:
      description: ''
      parameters:
        - name: workspaceId
          in: path
          required: true
          schema:
            type: string
      responses:
        '200':
          description: OK
        '400':
          description: Bad Request
  /api/v1/membership/{membershipId}:
    delete:
      description: ''
      parameters:
        - name: membershipId
          in: path
          required: true
          schema:
            type: string
      responses:
        '200':
          description: OK
        '400':
          description: Bad Request
  /api/v1/membership/{membershipId}/change-role:
    post:
      description: ''
      parameters:
        - name: membershipId
          in: path
          required: true
          schema:
            type: string
      responses:
        '200':
          description: OK
        '400':
          description: Bad Request
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                role:
                  example: any
  /api/v1/key/{workspaceId}:
    post:
      description: ''
      parameters:
        - name: workspaceId
          in: path
          required: true
          schema:
            type: string
      responses:
        '200':
          description: OK
        '400':
          description: Bad Request
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                key:
                  example: any
  /api/v1/key/{workspaceId}/latest:
    get:
      description: ''
      parameters:
        - name: workspaceId
          in: path
          required: true
          schema:
            type: string
      responses:
        '200':
          description: OK
        '400':
          description: Bad Request
  /api/v1/invite-org/signup:
    post:
      description: ''
      parameters: []
      responses:
        '200':
          description: OK
        '400':
          description: Bad Request
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                organizationId:
                  example: any
                inviteeEmail:
                  example: any
  /api/v1/invite-org/verify:
    post:
      description: ''
      parameters: []
      responses:
        '200':
          description: OK
        '400':
          description: Bad Request
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                email:
                  example: any
                code:
                  example: any
  /api/v1/secret/{workspaceId}:
    post:
      description: ''
      parameters:
        - name: workspaceId
          in: path
          required: true
          schema:
            type: string
      responses:
        '200':
          description: OK
        '400':
          description: Bad Request
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                secrets:
                  example: any
                keys:
                  example: any
                environment:
                  example: any
                channel:
                  example: any
    get:
      description: ''
      parameters:
        - name: workspaceId
          in: path
          required: true
          schema:
            type: string
        - name: environment
          in: query
          schema:
            type: string
        - name: channel
          in: query
          schema:
            type: string
      responses:
        '200':
          description: OK
        '400':
          description: Bad Request
  /api/v1/secret/{workspaceId}/service-token:
    get:
      description: ''
      parameters:
        - name: workspaceId
          in: path
          required: true
          schema:
            type: string
        - name: environment
          in: query
          schema:
            type: string
        - name: channel
          in: query
          schema:
            type: string
      responses:
        '200':
          description: OK
        '400':
          description: Bad Request
  /api/v1/service-token/:
    get:
      description: ''
      parameters: []
      responses:
        '200':
          description: OK
    post:
      description: ''
      parameters: []
      responses:
        '200':
          description: OK
        '400':
          description: Bad Request
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                name:
                  example: any
                workspaceId:
                  example: any
                environment:
                  example: any
                expiresIn:
                  example: any
                publicKey:
                  example: any
                encryptedKey:
                  example: any
                nonce:
                  example: any
  /api/v1/password/srp1:
    post:
      description: ''
      parameters: []
      responses:
        '200':
          description: OK
        '400':
          description: Bad Request
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                clientPublicKey:
                  example: any
  /api/v1/password/change-password:
    post:
      description: ''
      parameters: []
      responses:
        '200':
          description: OK
        '400':
          description: Bad Request
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                clientProof:
                  example: any
                encryptedPrivateKey:
                  example: any
                iv:
                  example: any
                tag:
                  example: any
                salt:
                  example: any
                verifier:
                  example: any
  /api/v1/password/email/password-reset:
    post:
      description: ''
      parameters: []
      responses:
        '200':
          description: OK
        '400':
          description: Bad Request
        '403':
          description: Forbidden
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                email:
                  example: any
  /api/v1/password/email/password-reset-verify:
    post:
      description: ''
      parameters: []
      responses:
        '200':
          description: OK
        '400':
          description: Bad Request
        '403':
          description: Forbidden
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                email:
                  example: any
                code:
                  example: any
  /api/v1/password/backup-private-key:
    get:
      description: ''
      parameters: []
      responses:
        '200':
          description: OK
        '400':
          description: Bad Request
    post:
      description: ''
      parameters: []
      responses:
        '200':
          description: OK
        '400':
          description: Bad Request
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                clientProof:
                  example: any
                encryptedPrivateKey:
                  example: any
                iv:
                  example: any
                tag:
                  example: any
                salt:
                  example: any
                verifier:
                  example: any
  /api/v1/password/password-reset:
    post:
      description: ''
      parameters: []
      responses:
        '200':
          description: OK
        '400':
          description: Bad Request
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                encryptedPrivateKey:
                  example: any
                iv:
                  example: any
                tag:
                  example: any
                salt:
                  example: any
                verifier:
                  example: any
  /api/v1/stripe/webhook:
    post:
      description: ''
      parameters:
        - name: stripe-signature
          in: header
          schema:
            type: string
      responses:
        '200':
          description: OK
        '400':
          description: Bad Request
  /api/v1/integration/{integrationId}:
    patch:
      description: ''
      parameters:
        - name: integrationId
          in: path
          required: true
          schema:
            type: string
      responses:
        '200':
          description: OK
        '400':
          description: Bad Request
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                app:
                  example: any
                environment:
                  example: any
                isActive:
                  example: any
                target:
                  example: any
                context:
                  example: any
                siteId:
                  example: any
    delete:
      description: ''
      parameters:
        - name: integrationId
          in: path
          required: true
          schema:
            type: string
      responses:
        '200':
          description: OK
        '400':
          description: Bad Request
  /api/v1/integration-auth/integration-options:
    get:
      description: ''
      parameters: []
      responses:
        '200':
          description: OK
  /api/v1/integration-auth/oauth-token:
    post:
      description: ''
      parameters: []
      responses:
        '200':
          description: OK
        '400':
          description: Bad Request
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                workspaceId:
                  example: any
                code:
                  example: any
                integration:
                  example: any
  /api/v1/integration-auth/{integrationAuthId}/apps:
    get:
      description: ''
      parameters:
        - name: integrationAuthId
          in: path
          required: true
          schema:
            type: string
      responses:
        '200':
          description: OK
        '400':
          description: Bad Request
  /api/v1/integration-auth/{integrationAuthId}:
    delete:
      description: ''
      parameters:
        - name: integrationAuthId
          in: path
          required: true
          schema:
            type: string
      responses:
        '200':
          description: OK
        '400':
          description: Bad Request
  /api/v2/users/me:
    get:
      summary: Retrieve the current user on the request
      description: Retrieve the current user on the request
      parameters: []
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  user:
                    type: object
                    $ref: '#/components/schemas/CurrentUser'
                    description: Current user on request
        '400':
          description: Bad Request
      security:
        - apiKeyAuth: []
  /api/v2/users/me/organizations:
    get:
      summary: Return organizations that current user is part of
      description: Return organizations that current user is part of
      parameters: []
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  organizations:
                    type: array
                    items:
                      $ref: '#/components/schemas/Organization'
                    description: Organizations that user is part of
        '400':
          description: Bad Request
      security:
        - apiKeyAuth: []
  /api/v2/organizations/{organizationId}/memberships:
    get:
      summary: Return organization memberships
      description: Return organization memberships
      parameters:
        - name: organizationId
          in: path
          required: true
          schema:
            type: string
          description: ID of organization
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  memberships:
                    type: array
                    items:
                      $ref: '#/components/schemas/MembershipOrg'
                    description: Memberships of organization
        '400':
          description: Bad Request
      security:
        - apiKeyAuth: []
  /api/v2/organizations/{organizationId}/memberships/{membershipId}:
    patch:
      summary: Update organization membership
      description: Update organization membership
      parameters:
        - name: organizationId
          in: path
          required: true
          schema:
            type: string
          description: ID of organization
        - name: membershipId
          in: path
          required: true
          schema:
            type: string
          description: ID of organization membership to update
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  membership:
                    $ref: '#/components/schemas/MembershipOrg'
                    description: Updated organization membership
        '400':
          description: Bad Request
      security:
        - apiKeyAuth: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                role:
                  type: string
                  description: >-
                    Role of organization membership - either owner, admin, or
                    member
    delete:
      summary: Delete organization membership
      description: Delete organization membership
      parameters:
        - name: organizationId
          in: path
          required: true
          schema:
            type: string
          description: ID of organization
        - name: membershipId
          in: path
          required: true
          schema:
            type: string
          description: ID of organization membership to delete
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  membership:
                    $ref: '#/components/schemas/MembershipOrg'
                    description: Deleted organization membership
        '400':
          description: Bad Request
      security:
        - apiKeyAuth: []
  /api/v2/organizations/{organizationId}/workspaces:
    get:
      summary: Return projects in organization that user is part of
      description: Return projects in organization that user is part of
      parameters:
        - name: organizationId
          in: path
          required: true
          schema:
            type: string
          description: ID of organization
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  workspaces:
                    type: array
                    items:
                      $ref: '#/components/schemas/Project'
                    description: Projects of organization
        '400':
          description: Bad Request
      security:
        - apiKeyAuth: []
  /api/v2/workspace/{workspaceId}/environments:
    post:
      description: ''
      parameters:
        - name: workspaceId
          in: path
          required: true
          schema:
            type: string
      responses:
        '200':
          description: OK
        '400':
          description: Bad Request
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                environmentName:
                  example: any
                environmentSlug:
                  example: any
    put:
      description: ''
      parameters:
        - name: workspaceId
          in: path
          required: true
          schema:
            type: string
      responses:
        '200':
          description: OK
        '400':
          description: Bad Request
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                environmentName:
                  example: any
                environmentSlug:
                  example: any
                oldEnvironmentSlug:
                  example: any
    delete:
      description: ''
      parameters:
        - name: workspaceId
          in: path
          required: true
          schema:
            type: string
      responses:
        '200':
          description: OK
        '400':
          description: Bad Request
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                environmentSlug:
                  example: any
  /api/v2/workspace/{workspaceId}/secrets:
    post:
      description: ''
      parameters:
        - name: workspaceId
          in: path
          required: true
          schema:
            type: string
      responses:
        '200':
          description: OK
        '400':
          description: Bad Request
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                secrets:
                  example: any
                keys:
                  example: any
                environment:
                  example: any
                channel:
                  example: any
    get:
      description: ''
      parameters:
        - name: workspaceId
          in: path
          required: true
          schema:
            type: string
        - name: environment
          in: query
          schema:
            type: string
        - name: channel
          in: query
          schema:
            type: string
      responses:
        '200':
          description: OK
        '400':
          description: Bad Request
  /api/v2/workspace/{workspaceId}/encrypted-key:
    get:
      summary: Return encrypted project key
      description: Return encrypted project key
      parameters:
        - name: workspaceId
          in: path
          required: true
          schema:
            type: string
          description: ID of project
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/ProjectKey'
                description: Encrypted project key for the given project
        '400':
          description: Bad Request
      security:
        - apiKeyAuth: []
  /api/v2/workspace/{workspaceId}/service-token-data:
    get:
      description: ''
      parameters:
        - name: workspaceId
          in: path
          required: true
          schema:
            type: string
      responses:
        '200':
          description: OK
        '400':
          description: Bad Request
  /api/v2/workspace/{workspaceId}/memberships:
    get:
      summary: Return project memberships
      description: Return project memberships
      parameters:
        - name: workspaceId
          in: path
          required: true
          schema:
            type: string
          description: ID of project
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  memberships:
                    type: array
                    items:
                      $ref: '#/components/schemas/Membership'
                    description: Memberships of project
        '400':
          description: Bad Request
      security:
        - apiKeyAuth: []
  /api/v2/workspace/{workspaceId}/memberships/{membershipId}:
    patch:
      summary: Update project membership
      description: Update project membership
      parameters:
        - name: workspaceId
          in: path
          required: true
          schema:
            type: string
          description: ID of project
        - name: membershipId
          in: path
          required: true
          schema:
            type: string
          description: ID of project membership to update
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  membership:
                    $ref: '#/components/schemas/Membership'
                    description: Updated membership
        '400':
          description: Bad Request
      security:
        - apiKeyAuth: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                role:
                  type: string
                  description: Role of membership - either admin or member
    delete:
      summary: Delete project membership
      description: Delete project membership
      parameters:
        - name: workspaceId
          in: path
          required: true
          schema:
            type: string
          description: ID of project
        - name: membershipId
          in: path
          required: true
          schema:
            type: string
          description: ID of project membership to delete
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  membership:
                    $ref: '#/components/schemas/Membership'
                    description: Deleted membership
        '400':
          description: Bad Request
      security:
        - apiKeyAuth: []
  /api/v2/secret/batch-create/workspace/{workspaceId}/environment/{environment}:
    post:
      description: ''
      parameters:
        - name: workspaceId
          in: path
          required: true
          schema:
            type: string
        - name: environment
          in: path
          required: true
          schema:
            type: string
      responses:
        '200':
          description: OK
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                secrets:
                  example: any
  /api/v2/secret/workspace/{workspaceId}/environment/{environment}:
    post:
      description: ''
      parameters:
        - name: workspaceId
          in: path
          required: true
          schema:
            type: string
        - name: environment
          in: path
          required: true
          schema:
            type: string
      responses:
        '200':
          description: OK
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                secret:
                  example: any
  /api/v2/secret/workspace/{workspaceId}:
    get:
      description: ''
      parameters:
        - name: workspaceId
          in: path
          required: true
          schema:
            type: string
        - name: environment
          in: query
          schema:
            type: string
      responses:
        '200':
          description: OK
  /api/v2/secret/{secretId}:
    get:
      description: ''
      parameters:
        - name: secretId
          in: path
          required: true
          schema:
            type: string
      responses:
        '200':
          description: OK
    delete:
      description: ''
      parameters:
        - name: secretId
          in: path
          required: true
          schema:
            type: string
      responses:
        '200':
          description: OK
  /api/v2/secret/batch/workspace/{workspaceId}/environment/{environmentName}:
    delete:
      description: ''
      parameters:
        - name: workspaceId
          in: path
          required: true
          schema:
            type: string
        - name: environmentName
          in: path
          required: true
          schema:
            type: string
      responses:
        '200':
          description: OK
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                secretIds:
                  example: any
  /api/v2/secret/batch-modify/workspace/{workspaceId}/environment/{environmentName}:
    patch:
      description: ''
      parameters:
        - name: workspaceId
          in: path
          required: true
          schema:
            type: string
        - name: environmentName
          in: path
          required: true
          schema:
            type: string
      responses:
        '200':
          description: OK
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                secrets:
                  example: any
  /api/v2/secret/workspace/{workspaceId}/environment/{environmentName}:
    patch:
      description: ''
      parameters:
        - name: workspaceId
          in: path
          required: true
          schema:
            type: string
        - name: environmentName
          in: path
          required: true
          schema:
            type: string
      responses:
        '200':
          description: OK
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                secret:
                  example: any
  /api/v2/secrets/:
    post:
      summary: Create new secret(s)
      description: Create one or many secrets for a given project and environment.
      parameters: []
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  secrets:
                    type: array
                    items:
                      $ref: '#/components/schemas/Secret'
                    description: >-
                      Newly-created secrets for the given project and
                      environment
      security:
        - apiKeyAuth: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                workspaceId:
                  type: string
                  description: ID of project
                environment:
                  type: string
                  description: Environment within project
                secrets:
                  $ref: '#/components/schemas/CreateSecret'
                  description: Secret(s) to create - object or array of objects
    get:
      summary: Read secrets
      description: Read secrets from a project and environment
      parameters:
        - name: workspaceId
          description: ID of project
          required: true
          in: query
          schema:
            type: string
        - name: environment
          description: Environment within project
          required: true
          in: query
          schema:
            type: string
        - name: content
          in: query
          schema:
            type: string
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  secrets:
                    type: array
                    items:
                      $ref: '#/components/schemas/Secret'
                    description: Secrets for the given project and environment
      security:
        - apiKeyAuth: []
    patch:
      summary: Update secret(s)
      description: Update secret(s)
      parameters: []
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  secrets:
                    type: array
                    items:
                      $ref: '#/components/schemas/Secret'
                    description: Updated secrets
      security:
        - apiKeyAuth: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                secrets:
                  $ref: '#/components/schemas/UpdateSecret'
                  description: Secret(s) to update - object or array of objects
    delete:
      summary: Delete secret(s)
      description: Delete one or many secrets by their ID(s)
      parameters: []
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  secrets:
                    type: array
                    items:
                      $ref: '#/components/schemas/Secret'
                    description: Deleted secrets
      security:
        - apiKeyAuth: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                secretIds:
                  type: string
                  description: ID(s) of secrets - string or array of strings
  /api/v2/service-token/:
    get:
      description: ''
      parameters: []
      responses:
        '200':
          description: OK
        '400':
          description: Bad Request
    post:
      description: ''
      parameters: []
      responses:
        '200':
          description: OK
        '400':
          description: Bad Request
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                name:
                  example: any
                workspaceId:
                  example: any
                environment:
                  example: any
                encryptedKey:
                  example: any
                iv:
                  example: any
                tag:
                  example: any
                expiresIn:
                  example: any
  /api/v2/service-token/{serviceTokenDataId}:
    delete:
      description: ''
      parameters:
        - name: serviceTokenDataId
          in: path
          required: true
          schema:
            type: string
      responses:
        '200':
          description: OK
        '400':
          description: Bad Request
  /api/v2/api-key/:
    get:
      description: ''
      parameters: []
      responses:
        '200':
          description: OK
        '400':
          description: Bad Request
    post:
      description: ''
      parameters: []
      responses:
        '200':
          description: OK
        '400':
          description: Bad Request
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                name:
                  example: any
                expiresIn:
                  example: any
  /api/v2/api-key/{apiKeyDataId}:
    delete:
      description: ''
      parameters:
        - name: apiKeyDataId
          in: path
          required: true
          schema:
            type: string
      responses:
        '200':
          description: OK
        '400':
          description: Bad Request
  /api/status:
    get:
      description: ''
      parameters: []
      responses:
        '200':
          description: OK
components:
  schemas:
    CurrentUser:
      type: object
      properties:
        _id:
          type: string
          example: ''
        email:
          type: string
          example: johndoe@gmail.com
        firstName:
          type: string
          example: John
        lastName:
          type: string
          example: Doe
        publicKey:
          type: string
          example: johns_nacl_public_key
        encryptedPrivateKey:
          type: string
          example: johns_enc_nacl_private_key
        iv:
          type: string
          example: iv_of_enc_nacl_private_key
        tag:
          type: string
          example: tag_of_enc_nacl_private_key
        updatedAt:
          type: string
          example: '2023-01-13T14:16:12.210Z'
        createdAt:
          type: string
          example: '2023-01-13T14:16:12.210Z'
    Membership:
      type: object
      properties:
        user:
          type: object
          properties:
            _id:
              type: string
              example: ''
            email:
              type: string
              example: johndoe@gmail.com
            firstName:
              type: string
              example: John
            lastName:
              type: string
              example: Doe
            publicKey:
              type: string
              example: johns_nacl_public_key
            updatedAt:
              type: string
              example: '2023-01-13T14:16:12.210Z'
            createdAt:
              type: string
              example: '2023-01-13T14:16:12.210Z'
        workspace:
          type: string
          example: ''
        role:
          type: string
          example: admin
    MembershipOrg:
      type: object
      properties:
        user:
          type: object
          properties:
            _id:
              type: string
              example: ''
            email:
              type: string
              example: johndoe@gmail.com
            firstName:
              type: string
              example: John
            lastName:
              type: string
              example: Doe
            publicKey:
              type: string
              example: johns_nacl_public_key
            updatedAt:
              type: string
              example: '2023-01-13T14:16:12.210Z'
            createdAt:
              type: string
              example: '2023-01-13T14:16:12.210Z'
        organization:
          type: string
          example: ''
        role:
          type: string
          example: owner
        status:
          type: string
          example: accepted
    Organization:
      type: object
      properties:
        _id:
          type: string
          example: ''
        name:
          type: string
          example: Acme Corp.
        customerId:
          type: string
          example: ''
    Project:
      type: object
      properties:
        _id:
          type: string
          example: ''
        name:
          type: string
          example: My Project
        organization:
          type: string
          example: ''
        environments:
          type: array
          items:
            type: object
            properties:
              name:
                type: string
                example: development
              slug:
                type: string
                example: dev
    ProjectKey:
      type: object
      properties:
        encryptedkey:
          type: string
          example: ''
        nonce:
          type: string
          example: ''
        sender:
          type: object
          properties:
            publicKey:
              type: string
              example: senders_nacl_public_key
        receiver:
          type: string
          example: ''
        workspace:
          type: string
          example: ''
    CreateSecret:
      type: object
      properties:
        type:
          type: string
          example: shared
        secretKeyCiphertext:
          type: string
          example: ''
        secretKeyIV:
          type: string
          example: ''
        secretKeyTag:
          type: string
          example: ''
        secretValueCiphertext:
          type: string
          example: ''
        secretValueIV:
          type: string
          example: ''
        secretValueTag:
          type: string
          example: ''
        secretCommentCiphertext:
          type: string
          example: ''
        secretCommentIV:
          type: string
          example: ''
        secretCommentTag:
          type: string
          example: ''
    UpdateSecret:
      type: object
      properties:
        id:
          type: string
          example: ''
        secretKeyCiphertext:
          type: string
          example: ''
        secretKeyIV:
          type: string
          example: ''
        secretKeyTag:
          type: string
          example: ''
        secretValueCiphertext:
          type: string
          example: ''
        secretValueIV:
          type: string
          example: ''
        secretValueTag:
          type: string
          example: ''
        secretCommentCiphertext:
          type: string
          example: ''
        secretCommentIV:
          type: string
          example: ''
        secretCommentTag:
          type: string
          example: ''
    Secret:
      type: object
      properties:
        _id:
          type: string
          example: ''
        version:
          type: number
          example: 1
        workspace:
          type: string
          example: ''
        type:
          type: string
          example: shared
        user: {}
        secretKeyCiphertext:
          type: string
          example: ''
        secretKeyIV:
          type: string
          example: ''
        secretKeyTag:
          type: string
          example: ''
        secretValueCiphertext:
          type: string
          example: ''
        secretValueIV:
          type: string
          example: ''
        secretValueTag:
          type: string
          example: ''
        secretCommentCiphertext:
          type: string
          example: ''
        secretCommentIV:
          type: string
          example: ''
        secretCommentTag:
          type: string
          example: ''
        updatedAt:
          type: string
          example: '2023-01-13T14:16:12.210Z'
        createdAt:
          type: string
          example: '2023-01-13T14:16:12.210Z'
    Log:
      type: object
      properties:
        _id:
          type: string
          example: ''
        user:
          type: object
          properties:
            _id:
              type: string
              example: ''
            email:
              type: string
              example: johndoe@gmail.com
            firstName:
              type: string
              example: John
            lastName:
              type: string
              example: Doe
        workspace:
          type: string
          example: ''
        actionNames:
          type: array
          example:
            - addSecrets
          items:
            type: string
        actions:
          type: array
          items:
            type: object
            properties:
              name:
                type: string
                example: addSecrets
              user:
                type: string
                example: ''
              workspace:
                type: string
                example: ''
              payload:
                type: array
                items:
                  type: object
                  properties:
                    oldSecretVersion:
                      type: string
                      example: ''
                    newSecretVersion:
                      type: string
                      example: ''
        channel:
          type: string
          example: cli
        ipAddress:
          type: string
          example: 192.168.0.1
        updatedAt:
          type: string
          example: '2023-01-13T14:16:12.210Z'
        createdAt:
          type: string
          example: '2023-01-13T14:16:12.210Z'
    SecretSnapshot:
      type: object
      properties:
        workspace:
          type: string
          example: ''
        version:
          type: number
          example: 1
        secretVersions:
          type: array
          items:
            type: object
            properties:
              _id:
                type: string
                example: ''
    SecretVersion:
      type: object
      properties:
        _id:
          type: string
          example: ''
        secret:
          type: string
          example: ''
        version:
          type: number
          example: 1
        workspace:
          type: string
          example: ''
        type:
          type: string
          example: shared
        user:
          type: string
          example: ''
        environment:
          type: string
          example: dev
        isDeleted:
          type: string
          example: ''
        secretKeyCiphertext:
          type: string
          example: ''
        secretKeyIV:
          type: string
          example: ''
        secretKeyTag:
          type: string
          example: ''
        secretValueCiphertext:
          type: string
          example: ''
        secretValueIV:
          type: string
          example: ''
        secretValueTag:
          type: string
          example: ''
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      bearerFormat: JWT
      description: >-
        This security definition uses the HTTP 'bearer' scheme, which allows the
        client to authenticate using a JSON Web Token (JWT) that is passed in
        the Authorization header of the request.
    apiKeyAuth:
      type: apiKey
      in: header
      name: X-API-Key
      description: >-
        This security definition uses an API key, which is passed in the header
        of the request as the value of the "X-API-Key" header. The client must
        provide a valid key in order to access the API.
