Phasio Internal Operator Controller API

Endpoints for managing operator configuration and settings

OpenAPI Specification

phasio-internal-operator-controller-api-openapi.yml Raw ↑
openapi: 3.1.0
info:
  title: Phasio Activity Internal Internal Operator Controller API
  description: This is the API documentation for the Phasio application.
  version: '1.0'
servers:
- url: https://m-api.eu.phas.io
  description: Generated server url
security:
- Phasio API Bearer Token: []
tags:
- name: Internal Operator Controller
  description: Endpoints for managing operator configuration and settings
paths:
  /api/internal/v1/operator:
    get:
      tags:
      - Internal Operator Controller
      summary: Get operator details
      description: Retrieves the complete details of the current operator
      operationId: getOperator
      responses:
        '200':
          description: Successfully retrieved operator details
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/OperatorDto'
        '401':
          description: Unauthorized - missing or invalid authentication
        '404':
          description: Operator not found
        '500':
          description: Operator context not found
    patch:
      tags:
      - Internal Operator Controller
      summary: Initialize operator
      description: Sets up the initial configuration for an operator account
      operationId: initializeOperator
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/InitializeOperatorRequestDto'
        required: true
      responses:
        '200':
          description: Operator successfully initialized
          content:
            application/json:
              schema:
                type: integer
                format: int64
        '400':
          description: Invalid initialization data
        '401':
          description: Unauthorized - missing or invalid authentication
        '500':
          description: Operator not found
  /api/internal/v1/operator/subscription-status:
    patch:
      tags:
      - Internal Operator Controller
      summary: Update subscription status
      description: Updates the subscription status for an operator
      operationId: updateSubscriptionStatus
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/UpdateSubscriptionStatusDto'
        required: true
      responses:
        '200':
          description: Subscription status updated
        '400':
          description: Invalid status
        '401':
          description: Unauthorized
  /api/internal/v1/operator/id/modules:
    patch:
      tags:
      - Internal Operator Controller
      summary: Sync operator modules
      description: Updates the subscribed feature modules for an operator
      operationId: syncOperatorModules
      responses:
        '200':
          description: Modules successfully updated
        '400':
          description: Invalid module configuration
        '401':
          description: Unauthorized - missing or invalid authentication
        '500':
          description: Operator not found
  /api/internal/v1/operator/processes:
    get:
      tags:
      - Internal Operator Controller
      summary: Get available manufacturing processes
      description: Retrieves all manufacturing processes available to the customer
      operationId: getProcesses
      responses:
        '200':
          description: Successfully retrieved manufacturing processes
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/ProcessPricesDto'
        '401':
          description: Unauthorized - missing customer or operator context
  /api/internal/v1/operator/email-credentials:
    get:
      tags:
      - Internal Operator Controller
      summary: Get operator email credentials
      description: Retrieves the SMTP email server credentials for the current operator
      operationId: getOperatorEmailCredentials
      responses:
        '200':
          description: Successfully retrieved email credentials
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/OperatorEmailCredentialsDto'
        '404':
          description: Email credentials not found for the operator
        '401':
          description: Unauthorized - missing or invalid authentication
  /api/internal/v1/operator/domain-from-address:
    get:
      tags:
      - Internal Operator Controller
      summary: Get operator domain from address
      description: Retrieves the verified SendGrid domain authentication from address for the current operator
      operationId: getOperatorDomainFromAddress
      responses:
        '200':
          description: Successfully retrieved verified from address
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/OperatorDomainFromAddressDto'
        '404':
          description: No verified domain authentication found for the operator
        '401':
          description: Unauthorized - missing or invalid authentication
components:
  schemas:
    InfillDto:
      type: object
      properties:
        id:
          type: integer
          format: int64
        name:
          type: string
        value:
          type: number
        default:
          type: boolean
      required:
      - default
      - id
      - name
      - value
    MaterialDto:
      type: object
      properties:
        id:
          type: integer
          format: int64
        name:
          type: string
        datasheetSummary:
          type: string
        quoteOnly:
          type: boolean
        colorDtos:
          type: array
          items:
            $ref: '#/components/schemas/ColorDto'
        isDefault:
          type: boolean
        wallThicknessWarning:
          type: number
        wallThicknessLimit:
          type: number
      required:
      - colorDtos
      - id
      - isDefault
      - name
      - quoteOnly
    CreateUserDto:
      type: object
      properties:
        firstName:
          type: string
        lastName:
          type: string
        phoneNumber:
          type: string
        email:
          type: string
        password:
          type: string
      required:
      - email
      - firstName
      - lastName
      - password
      - phoneNumber
    OperatorEmailCredentialsDto:
      type: object
      properties:
        id:
          type: string
          format: uuid
        smtpHost:
          type: string
        smtpPort:
          type: integer
          format: int32
        fromAddress:
          type: string
        smtpUsername:
          type: string
        smtpPassword:
          type: string
      required:
      - fromAddress
      - id
      - smtpHost
      - smtpPassword
      - smtpPort
      - smtpUsername
    UpdateSubscriptionStatusDto:
      type: object
      properties:
        status:
          type: string
      required:
      - status
    ColorDto:
      type: object
      properties:
        id:
          type: integer
          format: int64
        name:
          type: string
        code:
          type: string
      required:
      - code
      - id
      - name
    ProcessPricesDto:
      type: object
      properties:
        id:
          type: string
          format: uuid
        technology:
          type: string
        description:
          type: string
        materials:
          type: array
          items:
            $ref: '#/components/schemas/MaterialDto'
        infills:
          type: array
          items:
            $ref: '#/components/schemas/InfillDto'
        precisions:
          type: array
          items:
            $ref: '#/components/schemas/PrecisionPricesDto'
        postProcessings:
          type: array
          items:
            $ref: '#/components/schemas/PostProcessingDto'
        isInternal:
          type: boolean
        isDefault:
          type: boolean
        bulkPricingQuantities:
          type: array
          items:
            type: integer
      required:
      - bulkPricingQuantities
      - id
      - infills
      - isDefault
      - isInternal
      - materials
      - postProcessings
      - precisions
      - technology
    PrecisionPricesDto:
      type: object
      properties:
        id:
          type: integer
          format: int64
        name:
          type: string
        price:
          type: number
        isActive:
          type: boolean
      required:
      - id
      - isActive
      - name
      - price
    PostProcessingDto:
      type: object
      properties:
        id:
          type: integer
          format: int64
        name:
          type: string
        purchasable:
          type: boolean
        isDefault:
          type: boolean
        colors:
          type: array
          items:
            $ref: '#/components/schemas/ColorDto'
        incompatibleMaterialIds:
          type: array
          items:
            type: integer
            format: int64
        mutuallyExclusiveGroup:
          type: string
      required:
      - colors
      - incompatibleMaterialIds
      - isDefault
      - name
      - purchasable
    OperatorDto:
      type: object
      properties:
        name:
          type: string
        subscribedModules:
          type: array
          items:
            type: string
          uniqueItems: true
        currency:
          type: string
        acceptedCurrencies:
          type: array
          items:
            type: string
            enum:
            - USD
            - SGD
            - EUR
            - INR
            - JPY
            - AUD
            - GBP
            - NZD
            - MYR
            - CAD
            - CHF
            - DKK
            - SEK
            - MXN
            - ZAR
            - UAH
            - NOK
            - PHP
            - TRY
          uniqueItems: true
        permittedDomains:
          type: array
          items:
            type: string
          uniqueItems: true
        loginMethod:
          type: string
          enum:
          - EMAIL
          - PHONE
          - ANY
        loginStage:
          type: string
          enum:
          - BEFORE_PRICE
          - AFTER_PRICE
        landingPageMessage:
          type: string
        paymentProvider:
          type: string
        videoLink:
          type: string
        termsOfServiceLink:
          type: string
        maximumFileSize:
          type: integer
          format: int64
        isAIEnabled:
          type: boolean
        isTaxIDEnabled:
          type: boolean
        isPayByInvoiceEnabled:
          type: boolean
        isPayByPurchaseOrderEnabled:
          type: boolean
        isAccountingEnabled:
          type: boolean
        isOrientationConstraintEnabled:
          type: boolean
        isInvoiceDownloadEnabled:
          type: boolean
        storefrontTheme:
          type: string
          enum:
          - SYSTEM
          - LIGHT
          - DARK
        country:
          type: string
      required:
      - acceptedCurrencies
      - country
      - currency
      - isAIEnabled
      - isAccountingEnabled
      - isInvoiceDownloadEnabled
      - isOrientationConstraintEnabled
      - isPayByInvoiceEnabled
      - isPayByPurchaseOrderEnabled
      - isTaxIDEnabled
      - loginMethod
      - loginStage
      - name
      - paymentProvider
      - permittedDomains
      - storefrontTheme
      - subscribedModules
    OperatorDomainFromAddressDto:
      type: object
      properties:
        fromAddress:
          type: string
      required:
      - fromAddress
    InitializeOperatorRequestDto:
      type: object
      description: Operator initialization details
      properties:
        organizationName:
          type: string
        currency:
          type: string
        country:
          type: string
        userRequest:
          $ref: '#/components/schemas/CreateUserDto'
      required:
      - country
      - currency
      - organizationName
      - userRequest
  securitySchemes:
    Phasio API Bearer Token:
      type: http
      name: Authorization
      in: header
      scheme: bearer
      bearerFormat: JWT