> ## Documentation Index
> Fetch the complete documentation index at: https://support.i.moneyforward.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Create custom service and workspace

> Create a custom workspace with serviceId or service name



## OpenAPI

````yaml https://api.itmc.i.moneyforward.com/public-api/docs/v1-json post /api/v1/organizations/{organizationId}/workspaces/custom
openapi: 3.0.0
info:
  title: Admina Public API
  description: >-
    Admina API is a RESTfull API providing programmatic access to much of the
    data in the system. It provides predictable URLs for accessing resources,
    and uses built-in HTTP features to receive commands and return responses.
    This makes it easy to communicate with from a wide variety of environments,
    from command-line utilities to gadgets to the browser URL bar itself.
  version: '1.0'
  contact: {}
servers:
  - url: https://api.itmc.i.moneyforward.com
security: []
tags:
  - name: Organizations
    description: ''
  - name: Users
    description: ''
  - name: Directory
    description: ''
  - name: Departments
    description: ''
  - name: Locations
    description: ''
  - name: Companies
    description: ''
  - name: People
    description: ''
  - name: Workspaces
    description: ''
  - name: Custom Service and Workspace
    description: ''
  - name: Workspace Accounts
    description: ''
  - name: Accounts
    description: ''
  - name: Contracts
    description: ''
  - name: Devices
    description: ''
  - name: Devices (alpha)
    description: ''
  - name: Alerts
    description: ''
  - name: Spends
    description: ''
  - name: Usage Optimization
    description: ''
  - name: Services
    description: ''
  - name: Requests
    description: ''
  - name: AuditLogs
    description: ''
  - name: EventLogs
    description: ''
paths:
  /api/v1/organizations/{organizationId}/workspaces/custom:
    post:
      tags:
        - Custom Service and Workspace
      summary: Create custom service and workspace
      description: Create a custom workspace with serviceId or service name
      operationId: publicCreateCustomWorkspace
      parameters:
        - name: organizationId
          required: true
          in: path
          schema:
            type: number
      requestBody:
        required: true
        content:
          application/json:
            schema:
              oneOf:
                - $ref: >-
                    #/components/schemas/PublicCustomWorkspaceWithAdminaServiceDto
                - $ref: >-
                    #/components/schemas/PublicCustomWorkspaceWithServiceMasterDto
                - $ref: >-
                    #/components/schemas/PublicCustomWorkspaceWithCustomServiceDto
      responses:
        '201':
          description: ''
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PublicCreateCustomWorkspaceResponseDto'
      security:
        - API-Key: []
components:
  schemas:
    PublicCustomWorkspaceWithAdminaServiceDto:
      type: object
      properties:
        serviceId:
          type: number
          example: 1
          description: Standard service ID or custom service ID belonging to organization
        workspaceName:
          type: string
          example: admina
          description: Name to give to the workspace
        customWorkspaceType:
          example: google_sheet
          allOf:
            - $ref: '#/components/schemas/CustomWorkspaceType'
      required:
        - serviceId
        - workspaceName
        - customWorkspaceType
    PublicCustomWorkspaceWithServiceMasterDto:
      type: object
      properties:
        serviceMasterName:
          type: string
          example: zoom
          description: >-
            Master service name which enables matching for activity logs,
            spending data and such
        workspaceName:
          type: string
          example: admina
          description: Name to give to the workspace
        customWorkspaceType:
          example: google_sheet
          allOf:
            - $ref: '#/components/schemas/CustomWorkspaceType'
      required:
        - serviceMasterName
        - workspaceName
        - customWorkspaceType
    PublicCustomWorkspaceWithCustomServiceDto:
      type: object
      properties:
        serviceName:
          type: string
          example: Admina
          description: Name to give to the custom service
        serviceUrl:
          type: string
          example: https://example.com
          description: URL to attach to the custom service
        workspaceName:
          type: string
          example: admina
          description: Name to give to the workspace
        customWorkspaceType:
          example: manual_import
          allOf:
            - $ref: '#/components/schemas/CustomWorkspaceType'
      required:
        - serviceName
        - workspaceName
        - customWorkspaceType
    PublicCreateCustomWorkspaceResponseDto:
      type: object
      properties:
        service:
          readOnly: true
          allOf:
            - $ref: '#/components/schemas/ServiceResponseDto'
        workspace:
          readOnly: true
          allOf:
            - $ref: '#/components/schemas/WorkspaceResponseDto'
        isNewService:
          type: boolean
          readOnly: true
      required:
        - service
        - workspace
        - isNewService
    CustomWorkspaceType:
      type: string
      enum:
        - google_sheet
        - manual_import
    ServiceResponseDto:
      type: object
      properties:
        id:
          type: number
          readOnly: true
          example: 1
        name:
          type: string
          readOnly: true
          example: Google
        uniqueName:
          type: string
          readOnly: true
          example: google
        url:
          type: string
          readOnly: true
          example: https://google.com
        isEmployeeMasterService:
          type: boolean
          readOnly: true
          example: true
        adminUrl:
          type: string
          nullable: true
          readOnly: true
          example: https://admin.google.com/u/0/ac/home
        userManagementUrl:
          type: string
          nullable: true
          readOnly: true
          example: https://admin.google.com/u/0/ac/users
        serviceTopUrl:
          type: string
          nullable: true
          readOnly: true
          example: https://workspace.google.com/products/admin/
        guidanceUrl:
          type: string
          nullable: true
          readOnly: true
          example: https://notion.link/google
        serviceAlternateUrls:
          nullable: true
          readOnly: true
          example:
            - www.slides.google.com
            - www.docs.google.com
            - www.sheets.google.com
          type: array
          items:
            type: string
        aggreTypes:
          readOnly: true
          type: array
          items:
            $ref: '#/components/schemas/ServiceAggreTypeDto'
        canDeleteAccount:
          type: boolean
          readOnly: true
          example: false
        canDeactivateAccount:
          type: boolean
          readOnly: true
          example: false
        canAggregateSpend:
          type: boolean
          readOnly: true
          example: false
        canAggregateFiles:
          type: boolean
          readOnly: true
          example: false
        canManageFilePermissions:
          type: boolean
          readOnly: true
          example: false
        canOnlyAggregatePublicFiles:
          type: boolean
          readOnly: true
          example: false
        canAggregateDevices:
          type: boolean
          readOnly: true
          example: false
        canPerformMatching:
          type: boolean
          readOnly: true
          example: true
        canProvisionAccount:
          type: boolean
          readOnly: true
          example: false
        isCustomService:
          type: boolean
          readOnly: true
          example: false
        isIdentityProvider:
          type: boolean
          readOnly: true
          example: false
        serviceMeta:
          nullable: true
          readOnly: true
          type: object
          allOf:
            - $ref: '#/components/schemas/ServiceMetaResponseDto'
      required:
        - id
        - name
        - uniqueName
        - url
        - isEmployeeMasterService
        - adminUrl
        - userManagementUrl
        - serviceTopUrl
        - guidanceUrl
        - serviceAlternateUrls
        - aggreTypes
        - canDeleteAccount
        - canDeactivateAccount
        - canAggregateSpend
        - canAggregateFiles
        - canManageFilePermissions
        - canOnlyAggregatePublicFiles
        - canAggregateDevices
        - canPerformMatching
        - canProvisionAccount
        - isCustomService
        - isIdentityProvider
        - serviceMeta
    WorkspaceResponseDto:
      type: object
      properties:
        id:
          type: number
          readOnly: true
          example: 1
        organizationId:
          type: number
          readOnly: true
          example: 1
        serviceId:
          type: number
          readOnly: true
          example: 1
        authenType:
          type: string
          nullable: true
          readOnly: true
          example: api
        workspaceName:
          type: string
          readOnly: true
          example: iggre
        aggreKey:
          type: string
          nullable: true
          readOnly: true
          example: iggre
        lastExecutionStatus:
          readOnly: true
          example: processing
          allOf:
            - $ref: '#/components/schemas/WorkspaceLastExecutionStatus'
        lastExecutionTime:
          type: string
          nullable: true
          readOnly: true
          example: '2020-11-11 10:00:00'
        lastUsedAt:
          type: string
          nullable: true
          readOnly: true
          example: '2020-11-11 10:00:00'
        lastExecutionResultId:
          type: string
          nullable: true
          readOnly: true
          example: SUCCESS
        lastExecutionResultCode:
          type: number
          nullable: true
          readOnly: true
          example: 200
        lastExecutionResultMessage:
          type: string
          nullable: true
          readOnly: true
          example: NOT_FOUND
        provisioningCredentialEnabled:
          type: boolean
          readOnly: true
          example: false
        description:
          type: string
          nullable: true
          readOnly: true
          example: Description of the workspace
        showDescription:
          type: boolean
          readOnly: true
          example: false
        isCustomWorkspace:
          type: boolean
          readOnly: true
          example: false
        deviceAggregationStatus:
          readOnly: true
          example: finished
          allOf:
            - $ref: '#/components/schemas/DeviceAggregationStatus'
        service:
          nullable: true
          readOnly: true
          type: object
          allOf:
            - $ref: '#/components/schemas/ServiceResponseDto'
        workspaceMeta:
          nullable: true
          readOnly: true
          type: object
          allOf:
            - $ref: '#/components/schemas/WorkspaceMetaResponseDto'
        billingManagers:
          readOnly: true
          type: array
          items:
            $ref: '#/components/schemas/WorkspaceBillingManagerDto'
        peopleInCharge:
          readOnly: true
          type: array
          items:
            $ref: '#/components/schemas/WorkspacePeopleInChargeDto'
        creator:
          nullable: true
          readOnly: true
          type: object
          allOf:
            - $ref: '#/components/schemas/OrganizationUserResponseDto'
        accountCount:
          type: number
          readOnly: true
        identityProviderWorkspaceId:
          type: number
          nullable: true
          readOnly: true
        customWorkspaceType:
          readOnly: true
          example: google_sheet
          allOf:
            - $ref: '#/components/schemas/CustomWorkspaceType'
      required:
        - id
        - organizationId
        - serviceId
        - authenType
        - workspaceName
        - aggreKey
        - lastExecutionStatus
        - lastExecutionTime
        - lastUsedAt
        - lastExecutionResultId
        - lastExecutionResultCode
        - lastExecutionResultMessage
        - provisioningCredentialEnabled
        - description
        - showDescription
        - isCustomWorkspace
        - deviceAggregationStatus
        - service
        - workspaceMeta
        - billingManagers
        - peopleInCharge
        - creator
        - accountCount
        - identityProviderWorkspaceId
        - customWorkspaceType
    ServiceAggreTypeDto:
      type: object
      properties:
        name:
          type: string
          example: aggregateAll
        authenTypes:
          type: array
          items:
            $ref: '#/components/schemas/ServiceAuthenTypeDto'
      required:
        - name
    ServiceMetaResponseDto:
      type: object
      properties:
        id:
          type: number
          readOnly: true
          example: 1
        vendorName:
          type: string
          nullable: true
          readOnly: true
          example: Example Vendor
        vendorCountryOfOrigin:
          type: string
          nullable: true
          readOnly: true
          example: Japan
        termsOfUseUrl:
          type: string
          nullable: true
          readOnly: true
          example: https://example.com
        privacyPolicyUrl:
          type: string
          nullable: true
          readOnly: true
          example: https://example.com
        dataSecurityPolicyUrl:
          type: string
          nullable: true
          readOnly: true
          example: https://example.com
        certifications:
          readOnly: true
          type: array
          items:
            $ref: '#/components/schemas/CertificationResponseDto'
      required:
        - id
        - vendorName
        - vendorCountryOfOrigin
        - termsOfUseUrl
        - privacyPolicyUrl
        - dataSecurityPolicyUrl
        - certifications
    WorkspaceLastExecutionStatus:
      type: string
      enum:
        - pending
        - processing
        - connected
        - maintenance
        - suspended
        - stopped
        - manual
    DeviceAggregationStatus:
      type: string
      enum:
        - disabled
        - processing
        - finished
        - failed
    WorkspaceMetaResponseDto:
      type: object
      properties:
        id:
          type: number
          readOnly: true
          example: 1
        workspaceId:
          type: number
          readOnly: true
          example: 1
        organizationId:
          type: number
          readOnly: true
          example: 1
        note:
          type: string
          nullable: true
          readOnly: true
          example: Example note
        businessImpactLevel:
          nullable: true
          readOnly: true
          example: low
          allOf:
            - $ref: '#/components/schemas/BusinessImpactLevel'
        dataStoreRegion:
          type: string
          nullable: true
          readOnly: true
          example: ap-northeast-1
        piiEnabled:
          type: boolean
          nullable: true
          readOnly: true
          example: false
        pii:
          type: string
          nullable: true
          readOnly: true
          example: Example note
        confidentialInfo:
          nullable: true
          readOnly: true
          example: confidential
          allOf:
            - $ref: '#/components/schemas/ConfidentialInfo'
        securityImpactLevel:
          nullable: true
          readOnly: true
          example: low
          allOf:
            - $ref: '#/components/schemas/SecurityImpactLevel'
        vendorName:
          type: string
          nullable: true
          readOnly: true
          example: Example Vendor
        vendorRelationship:
          type: string
          nullable: true
          readOnly: true
          example: Example Vendor Relationship
        vendorPhone:
          type: string
          nullable: true
          readOnly: true
          example: '12345567890'
        vendorMailAddress:
          type: string
          nullable: true
          readOnly: true
          example: Example Vendor Mail address
      required:
        - id
        - workspaceId
        - organizationId
        - note
        - businessImpactLevel
        - dataStoreRegion
        - piiEnabled
        - pii
        - confidentialInfo
        - securityImpactLevel
        - vendorName
        - vendorRelationship
        - vendorPhone
        - vendorMailAddress
    WorkspaceBillingManagerDto:
      type: object
      properties:
        id:
          type: number
          readOnly: true
          example: 1
        avatar:
          type: string
          nullable: true
          readOnly: true
          example: avatar
        displayName:
          type: string
          nullable: true
          readOnly: true
          example: Example name
        primaryEmail:
          type: string
          nullable: true
          readOnly: true
          example: Example email
      required:
        - id
        - avatar
        - displayName
        - primaryEmail
    WorkspacePeopleInChargeDto:
      type: object
      properties:
        id:
          type: number
          readOnly: true
          example: 1
        avatar:
          type: string
          nullable: true
          readOnly: true
          example: avatar
        displayName:
          type: string
          nullable: true
          readOnly: true
          example: Example name
        primaryEmail:
          type: string
          nullable: true
          readOnly: true
          example: Example email
      required:
        - id
        - avatar
        - displayName
        - primaryEmail
    OrganizationUserResponseDto:
      type: object
      properties:
        id:
          type: number
          readOnly: true
          example: 1
        email:
          type: string
          readOnly: true
          example: foo.bar@example.com
        name:
          type: string
          readOnly: true
          example: foo.bar
        location:
          readOnly: true
          example: jp
          allOf:
            - $ref: '#/components/schemas/Location'
        roles:
          readOnly: true
          type: array
          items:
            $ref: '#/components/schemas/UserRoleDto'
        status:
          readOnly: true
          example: active
          allOf:
            - $ref: '#/components/schemas/UserOrganizationStatus'
      required:
        - id
        - email
        - name
        - location
        - roles
        - status
    ServiceAuthenTypeDto:
      type: object
      properties:
        name:
          type: string
          example: oauth
        requiredAttributes:
          type: array
          example:
            - username
            - password
          items:
            $ref: '#/components/schemas/AuthenAttribute'
        optionalAttributes:
          type: array
          example:
            - secretKey
          items:
            $ref: '#/components/schemas/AuthenAttribute'
        permittedAttributes:
          type: array
          example:
            - aggreKey
          items:
            $ref: '#/components/schemas/AuthenAttribute'
        separatelyUpdatableAttributes:
          type: array
          example:
            - groups
          items:
            $ref: '#/components/schemas/AuthenAttribute'
        variant:
          type: string
          example: enterprisePlan
        permissions:
          example:
            - read-write
            - read
          type: array
          items:
            type: string
      required:
        - name
        - requiredAttributes
        - optionalAttributes
        - permittedAttributes
        - separatelyUpdatableAttributes
        - permissions
    CertificationResponseDto:
      type: object
      properties:
        name:
          type: string
          readOnly: true
          example: Example
        url:
          type: string
          readOnly: true
          example: https://example.com
      required:
        - name
        - url
    BusinessImpactLevel:
      type: string
      enum:
        - high
        - moderate
        - low
    ConfidentialInfo:
      type: string
      enum:
        - unclassified
        - confidential
        - secret
        - topSecret
    SecurityImpactLevel:
      type: string
      enum:
        - high
        - moderate
        - low
    Location:
      type: string
      enum:
        - global
        - us
        - jp
    UserRoleDto:
      type: object
      properties:
        id:
          type: number
          readOnly: true
          example: 1
        name:
          type: string
          readOnly: true
          example: Admin
      required:
        - id
        - name
    UserOrganizationStatus:
      type: string
      enum:
        - active
        - invited
    AuthenAttribute:
      type: string
      enum:
        - workspaceName
        - aggreKey
        - username
        - email
        - password
        - accessToken
        - refreshToken
        - secretKey
        - secretKeyLogin
        - clientId
        - clientSecret
        - region
        - technicalAccountId
        - orgId
        - issuer
        - privateKey
        - publicKey
        - domain
        - domainCode
        - baseUri
        - accountServer
        - consumerKey
        - serverId
        - apiId
        - customEmailFieldName
        - basicAuthUser
        - basicAuthPassword
        - tokenId
        - tokenSecret
        - externalUrl
        - apiKey
        - apiSecretKey
        - otherApiKey
        - roleArn
        - externalId
        - groups
        - billingTypes
        - domains
        - domainList
        - permissions
        - integrationTarget
        - accountOrSubAccountCodes
        - deviceEnabled
        - adminPassword
        - prioritizeBusinessName
        - userId
        - deviceGroup
        - ignoreExternalUserData
        - applicationKey
        - formatOfEmployeeId
        - serialNumberNullValues
  securitySchemes:
    API-Key:
      scheme: bearer
      bearerFormat: JWT
      type: http
      description: >-
        For authenticated requests, set the `Authorization: Bearer your_api_key`
        parameter in the header. <br/>You can create and manage your API Keys by
        visiting the **API Keys** tab in the **Settings** page of your
        organization in <a target='_blank'
        href='https://itmc.i.moneyforward.com/'>Admina</a>

````