Virto Commerce Store API

Multi store management with individual store settings

OpenAPI Specification

virto-commerce-store-api-openapi.yml Raw ↑
openapi: 3.0.4
info:
  title: VirtoCommerce.Cart Catalog Store API
  version: v1
  description: Easily manage your products, categories, variations, and properties
tags:
- name: Store
  description: Multi store management with individual store settings
paths:
  /api/store-authentication-schemes/{storeId}:
    get:
      tags:
      - Store
      operationId: StoreAuthenticationScheme_Get
      parameters:
      - name: storeId
        in: path
        required: true
        schema:
          type: string
      responses:
        '200':
          description: OK
          content:
            text/plain:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/StoreAuthenticationScheme'
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/StoreAuthenticationScheme'
            text/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/StoreAuthenticationScheme'
        '401':
          description: Unauthorized
        '403':
          description: Forbidden
      security:
      - oauth2:
        - store:read
      - api_key:
        - store:read
      - api_key_header:
        - store:read
      - http-signature:
        - store:read
      - basic:
        - store:read
      x-virtocommerce-module-id: VirtoCommerce.Store
    put:
      tags:
      - Store
      operationId: StoreAuthenticationScheme_Update
      parameters:
      - name: storeId
        in: path
        required: true
        schema:
          type: string
      requestBody:
        content:
          application/json-patch+json:
            schema:
              type: array
              items:
                $ref: '#/components/schemas/StoreAuthenticationScheme'
          application/json:
            schema:
              type: array
              items:
                $ref: '#/components/schemas/StoreAuthenticationScheme'
          text/json:
            schema:
              type: array
              items:
                $ref: '#/components/schemas/StoreAuthenticationScheme'
      responses:
        '204':
          description: No Content
        '401':
          description: Unauthorized
        '403':
          description: Forbidden
      security:
      - oauth2:
        - store:update
      - api_key:
        - store:update
      - api_key_header:
        - store:update
      - http-signature:
        - store:update
      - basic:
        - store:update
      x-virtocommerce-module-id: VirtoCommerce.Store
  /api/stores/search:
    post:
      tags:
      - Store
      summary: Search stores
      operationId: StoreModule_SearchStores
      requestBody:
        content:
          application/json-patch+json:
            schema:
              allOf:
              - $ref: '#/components/schemas/StoreSearchCriteria'
          application/json:
            schema:
              allOf:
              - $ref: '#/components/schemas/StoreSearchCriteria'
          text/json:
            schema:
              allOf:
              - $ref: '#/components/schemas/StoreSearchCriteria'
      responses:
        '200':
          description: OK
          content:
            text/plain:
              schema:
                $ref: '#/components/schemas/StoreSearchResult'
            application/json:
              schema:
                $ref: '#/components/schemas/StoreSearchResult'
            text/json:
              schema:
                $ref: '#/components/schemas/StoreSearchResult'
        '401':
          description: Unauthorized
        '403':
          description: Forbidden
      security:
      - oauth2: []
      - api_key: []
      - api_key_header: []
      - http-signature: []
      - basic: []
      x-virtocommerce-module-id: VirtoCommerce.Store
  /api/stores/{id}:
    get:
      tags:
      - Store
      summary: Get store by id
      operationId: StoreModule_GetStoreById
      parameters:
      - name: id
        in: path
        description: Store id
        required: true
        schema:
          type: string
      - name: responseGroup
        in: query
        description: Response group
        schema:
          type: string
      responses:
        '200':
          description: OK
          content:
            text/plain:
              schema:
                $ref: '#/components/schemas/Store'
            application/json:
              schema:
                $ref: '#/components/schemas/Store'
            text/json:
              schema:
                $ref: '#/components/schemas/Store'
        '401':
          description: Unauthorized
        '403':
          description: Forbidden
      security:
      - oauth2: []
      - api_key: []
      - api_key_header: []
      - http-signature: []
      - basic: []
      x-virtocommerce-module-id: VirtoCommerce.Store
    patch:
      tags:
      - Store
      summary: Partial update for the specified store by id
      operationId: StoreModule_PatchStore
      parameters:
      - name: id
        in: path
        description: Store id
        required: true
        schema:
          type: string
      requestBody:
        description: JsonPatchDocument object with fields to update
        content:
          application/json-patch+json:
            schema:
              type: array
              items:
                $ref: '#/components/schemas/Operation'
          application/json:
            schema:
              type: array
              items:
                $ref: '#/components/schemas/Operation'
          text/json:
            schema:
              type: array
              items:
                $ref: '#/components/schemas/Operation'
      responses:
        '204':
          description: No Content
        '401':
          description: Unauthorized
        '403':
          description: Forbidden
      security:
      - oauth2: []
      - api_key: []
      - api_key_header: []
      - http-signature: []
      - basic: []
      x-virtocommerce-module-id: VirtoCommerce.Store
  /api/stores/outer/{outerId}:
    get:
      tags:
      - Store
      summary: Gets store by outer id.
      description: Gets store by outer id (integration key) with full information loaded
      operationId: StoreModule_GetStoreByOuterId
      parameters:
      - name: outerId
        in: path
        description: Store outer id
        required: true
        schema:
          type: string
      - name: responseGroup
        in: query
        description: Response group
        schema:
          type: string
      responses:
        '200':
          description: OK
          content:
            text/plain:
              schema:
                $ref: '#/components/schemas/Store'
            application/json:
              schema:
                $ref: '#/components/schemas/Store'
            text/json:
              schema:
                $ref: '#/components/schemas/Store'
        '401':
          description: Unauthorized
        '403':
          description: Forbidden
      security:
      - oauth2: []
      - api_key: []
      - api_key_header: []
      - http-signature: []
      - basic: []
      x-virtocommerce-module-id: VirtoCommerce.Store
  /api/stores:
    post:
      tags:
      - Store
      summary: Create store
      operationId: StoreModule_CreateStore
      requestBody:
        description: Store
        content:
          application/json-patch+json:
            schema:
              allOf:
              - $ref: '#/components/schemas/Store'
          application/json:
            schema:
              allOf:
              - $ref: '#/components/schemas/Store'
          text/json:
            schema:
              allOf:
              - $ref: '#/components/schemas/Store'
      responses:
        '200':
          description: OK
          content:
            text/plain:
              schema:
                $ref: '#/components/schemas/Store'
            application/json:
              schema:
                $ref: '#/components/schemas/Store'
            text/json:
              schema:
                $ref: '#/components/schemas/Store'
        '401':
          description: Unauthorized
        '403':
          description: Forbidden
      security:
      - oauth2:
        - store:create
      - api_key:
        - store:create
      - api_key_header:
        - store:create
      - http-signature:
        - store:create
      - basic:
        - store:create
      x-virtocommerce-module-id: VirtoCommerce.Store
    put:
      tags:
      - Store
      summary: Update store
      operationId: StoreModule_UpdateStore
      requestBody:
        description: Store
        content:
          application/json-patch+json:
            schema:
              allOf:
              - $ref: '#/components/schemas/Store'
          application/json:
            schema:
              allOf:
              - $ref: '#/components/schemas/Store'
          text/json:
            schema:
              allOf:
              - $ref: '#/components/schemas/Store'
      responses:
        '204':
          description: No Content
        '401':
          description: Unauthorized
        '403':
          description: Forbidden
      security:
      - oauth2: []
      - api_key: []
      - api_key_header: []
      - http-signature: []
      - basic: []
      x-virtocommerce-module-id: VirtoCommerce.Store
    delete:
      tags:
      - Store
      summary: Delete stores
      operationId: StoreModule_DeleteStore
      parameters:
      - name: ids
        in: query
        description: Ids of store that needed to delete
        schema:
          type: array
          items:
            type: string
      responses:
        '204':
          description: No Content
        '401':
          description: Unauthorized
        '403':
          description: Forbidden
      security:
      - oauth2: []
      - api_key: []
      - api_key_header: []
      - http-signature: []
      - basic: []
      x-virtocommerce-module-id: VirtoCommerce.Store
  /api/stores/send/dynamicnotification:
    post:
      tags:
      - Store
      summary: Send dynamic notification (contains custom list of properties) to store or administrator email
      operationId: StoreModule_SendDynamicNotificationToStoreEmail
      requestBody:
        description: ''
        content:
          application/json-patch+json:
            schema:
              allOf:
              - $ref: '#/components/schemas/SendDynamicNotificationRequest'
          application/json:
            schema:
              allOf:
              - $ref: '#/components/schemas/SendDynamicNotificationRequest'
          text/json:
            schema:
              allOf:
              - $ref: '#/components/schemas/SendDynamicNotificationRequest'
      responses:
        '204':
          description: No Content
        '401':
          description: Unauthorized
        '403':
          description: Forbidden
      security:
      - oauth2: []
      - api_key: []
      - api_key_header: []
      - http-signature: []
      - basic: []
      x-virtocommerce-module-id: VirtoCommerce.Store
  /api/stores/{storeId}/accounts/{id}/loginonbehalf:
    get:
      tags:
      - Store
      summary: Check if given contact has login on behalf permission
      operationId: StoreModule_GetLoginOnBehalfInfo
      parameters:
      - name: storeId
        in: path
        description: Store ID
        required: true
        schema:
          type: string
      - name: id
        in: path
        description: Contact ID
        required: true
        schema:
          type: string
      responses:
        '200':
          description: OK
          content:
            text/plain:
              schema:
                $ref: '#/components/schemas/LoginOnBehalfInfo'
            application/json:
              schema:
                $ref: '#/components/schemas/LoginOnBehalfInfo'
            text/json:
              schema:
                $ref: '#/components/schemas/LoginOnBehalfInfo'
        '401':
          description: Unauthorized
        '403':
          description: Forbidden
      security:
      - oauth2: []
      - api_key: []
      - api_key_header: []
      - http-signature: []
      - basic: []
      x-virtocommerce-module-id: VirtoCommerce.Store
  /api/stores/allowed/{userId}:
    get:
      tags:
      - Store
      summary: Returns list of stores which user can sign in
      operationId: StoreModule_GetUserAllowedStores
      parameters:
      - name: userId
        in: path
        description: ''
        required: true
        schema:
          type: string
      responses:
        '200':
          description: OK
          content:
            text/plain:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/Store'
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/Store'
            text/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/Store'
        '401':
          description: Unauthorized
        '403':
          description: Forbidden
      security:
      - oauth2: []
      - api_key: []
      - api_key_header: []
      - http-signature: []
      - basic: []
      x-virtocommerce-module-id: VirtoCommerce.Store
  /api/stores/{id}/public-settings:
    get:
      tags:
      - Store
      operationId: StoreModule_GetStorePublicSettingsById
      parameters:
      - name: id
        in: path
        required: true
        schema:
          type: string
      responses:
        '200':
          description: OK
          content:
            text/plain:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/ModulePublicStoreSettings'
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/ModulePublicStoreSettings'
            text/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/ModulePublicStoreSettings'
      x-virtocommerce-module-id: VirtoCommerce.Store
components:
  schemas:
    StoreState:
      enum:
      - Open
      - Closed
      - RestrictedAccess
      type: string
    SeoInfo:
      type: object
      properties:
        name:
          type: string
          nullable: true
        semanticUrl:
          type: string
          nullable: true
        outline:
          type: string
          nullable: true
        pageTitle:
          type: string
          nullable: true
        metaDescription:
          type: string
          nullable: true
        imageAltDescription:
          type: string
          nullable: true
        metaKeywords:
          type: string
          nullable: true
        storeId:
          type: string
          nullable: true
        organizationId:
          type: string
          nullable: true
        objectId:
          type: string
          nullable: true
        objectType:
          type: string
          nullable: true
        isActive:
          type: boolean
        languageCode:
          type: string
          nullable: true
        createdDate:
          type: string
          format: date-time
        modifiedDate:
          type: string
          format: date-time
          nullable: true
        createdBy:
          maxLength: 64
          minLength: 0
          type: string
          nullable: true
        modifiedBy:
          maxLength: 64
          minLength: 0
          type: string
          nullable: true
        id:
          type: string
          nullable: true
      additionalProperties: false
    DynamicPropertyValueType:
      enum:
      - Undefined
      - ShortText
      - LongText
      - Integer
      - Decimal
      - DateTime
      - Boolean
      - Html
      - Image
      type: string
    Store:
      type: object
      properties:
        name:
          type: string
          nullable: true
        description:
          type: string
          nullable: true
        storeState:
          allOf:
          - $ref: '#/components/schemas/StoreState'
          description: Store current state (Open, Closed, RestrictedAccess)
        timeZone:
          type: string
          nullable: true
        country:
          type: string
          nullable: true
        region:
          type: string
          nullable: true
        defaultLanguage:
          type: string
          nullable: true
        defaultCurrency:
          type: string
          nullable: true
        catalog:
          type: string
          description: Catalog id used as primary store catalog
          nullable: true
        creditCardSavePolicy:
          type: boolean
        url:
          type: string
          description: Store storefront url
          nullable: true
        secureUrl:
          type: string
          description: Store storefront https url
          nullable: true
        email:
          type: string
          description: Primary store contact email can be used for store event notifications and for feed back
          nullable: true
        adminEmail:
          type: string
          nullable: true
        emailName:
          type: string
          nullable: true
        adminEmailName:
          type: string
          nullable: true
        displayOutOfStock:
          type: boolean
        outerId:
          type: string
          nullable: true
        mainFulfillmentCenterId:
          type: string
          description: Primary (default) fulfillment center id
          nullable: true
        additionalFulfillmentCenterIds:
          type: array
          items:
            type: string
          description: Alternate fulfillment centers ids
          nullable: true
        mainReturnsFulfillmentCenterId:
          type: string
          description: Primary (default) fulfillment center for order return
          nullable: true
        returnsFulfillmentCenterIds:
          type: array
          items:
            type: string
          description: Alternate fulfillment centers for order return
          nullable: true
        languages:
          type: array
          items:
            type: string
          description: All store supported languages
          nullable: true
        currencies:
          type: array
          items:
            type: string
          description: All store supported currencies
          nullable: true
        trustedGroups:
          type: array
          items:
            type: string
          description: All store trusted groups (group of stores that shared the user logins)
          nullable: true
        seoObjectType:
          type: string
          nullable: true
          readOnly: true
        seoInfos:
          type: array
          items:
            $ref: '#/components/schemas/SeoInfo'
          nullable: true
        objectType:
          type: string
          nullable: true
          readOnly: true
        dynamicProperties:
          type: array
          items:
            $ref: '#/components/schemas/DynamicObjectProperty'
          nullable: true
        settings:
          type: array
          items:
            $ref: '#/components/schemas/ObjectSettingEntry'
          nullable: true
        typeName:
          type: string
          nullable: true
          readOnly: true
        scopes:
          type: array
          items:
            type: string
          nullable: true
        createdDate:
          type: string
          format: date-time
        modifiedDate:
          type: string
          format: date-time
          nullable: true
        createdBy:
          maxLength: 64
          minLength: 0
          type: string
          nullable: true
        modifiedBy:
          maxLength: 64
          minLength: 0
          type: string
          nullable: true
        id:
          type: string
          nullable: true
      additionalProperties: false
    DynamicPropertyObjectValue:
      type: object
      properties:
        objectType:
          type: string
          nullable: true
        objectId:
          type: string
          nullable: true
        locale:
          type: string
          nullable: true
        value:
          type: object
          nullable: true
        valueId:
          type: string
          nullable: true
        valueType:
          allOf:
          - $ref: '#/components/schemas/DynamicPropertyValueType'
        propertyId:
          type: string
          nullable: true
        propertyName:
          type: string
          nullable: true
      additionalProperties: false
    DynamicObjectProperty:
      type: object
      properties:
        objectId:
          type: string
          nullable: true
        values:
          type: array
          items:
            $ref: '#/components/schemas/DynamicPropertyObjectValue'
          nullable: true
        name:
          type: string
          nullable: true
        description:
          type: string
          nullable: true
        objectType:
          type: string
          nullable: true
        isArray:
          type: boolean
        isDictionary:
          type: boolean
        isMultilingual:
          type: boolean
        isRequired:
          type: boolean
        displayOrder:
          type: integer
          format: int32
          nullable: true
        valueType:
          allOf:
          - $ref: '#/components/schemas/DynamicPropertyValueType'
        displayNames:
          type: array
          items:
            $ref: '#/components/schemas/DynamicPropertyName'
          nullable: true
        createdDate:
          type: string
          format: date-time
        modifiedDate:
          type: string
          format: date-time
          nullable: true
        createdBy:
          maxLength: 64
          minLength: 0
          type: string
          nullable: true
        modifiedBy:
          maxLength: 64
          minLength: 0
          type: string
          nullable: true
        id:
          type: string
          nullable: true
      additionalProperties: false
    LoginOnBehalfInfo:
      type: object
      properties:
        userName:
          type: string
          nullable: true
        canLoginOnBehalf:
          type: boolean
      additionalProperties: false
      description: Represent result for checking of possibility login on behalf request
    StoreAuthenticationScheme:
      type: object
      properties:
        storeId:
          type: string
          nullable: true
        name:
          type: string
          nullable: true
        displayName:
          type: string
          nullable: true
        isActive:
          type: boolean
        position:
          type: integer
          format: int32
        createdDate:
          type: string
          format: date-time
        modifiedDate:
          type: string
          format: date-time
          nullable: true
        createdBy:
          maxLength: 64
          minLength: 0
          type: string
          nullable: true
        modifiedBy:
          maxLength: 64
          minLength: 0
          type: string
          nullable: true
        id:
          type: string
          nullable: true
      additionalProperties: false
    SortInfo:
      type: object
      properties:
        sortColumn:
          type: string
          nullable: true
        sortDirection:
          allOf:
          - $ref: '#/components/schemas/SortDirection'
      additionalProperties: false
    StoreSearchCriteria:
      type: object
      properties:
        storeStates:
          type: array
          items:
            $ref: '#/components/schemas/StoreState'
          nullable: true
        fulfillmentCenterIds:
          type: array
          items:
            type: string
          nullable: true
        domain:
          type: string
          nullable: true
        responseGroup:
          type: string
          nullable: true
        objectType:
          type: string
          nullable: true
        objectTypes:
          type: array
          items:
            type: string
          nullable: true
        objectIds:
          type: array
          items:
            type: string
          nullable: true
        keyword:
          type: string
          nullable: true
        searchPhrase:
          type: string
          nullable: true
        languageCode:
          type: string
          nullable: true
        sort:
          type: string
          nullable: true
        sortInfos:
          type: array
          items:
            $ref: '#/components/schemas/SortInfo'
          nullable: true
          readOnly: true
        skip:
          type: integer
          format: int32
        take:
          type: integer
          format: int32
      additionalProperties: false
    Operation:
      type: object
      properties:
        value:
          type: object
          nullable: true
        path:
          type: string
          nullable: true
        op:
          type: string
          nullable: true
        from:
          type: string
          nullable: true
      additionalProperties: false
    StoreSearchResult:
      type: object
      properties:
        totalCount:
          type: integer
          format: int32
        results:
          type: array
          items:
            $ref: '#/components/schemas/Store'
          nullable: true
      additionalProperties: false
    SettingValueType:
      enum:
      - ShortText
      - LongText
      - Integer
      - Decimal
      - DateTime
      - Boolean
      - SecureString
      - Json
      - PositiveInteger
      type: string
    ModulePublicStoreSettings:
      type: object
      properties:
        moduleId:
          type: string
          nullable: true
        settings:
          type: array
          items:
            $ref: '#/components/schemas/PublicStoreSetting'
          nullable: true
      additionalProperties: false
    DynamicPropertyName:
      type: object
      properties:
        locale:
          type: string
          nullable: true
        name:
          type: string
          nullable: true
      additionalProperties: false
    SortDirection:
      enum:
      - Ascending
      - Descending
      type: string
    ObjectSettingEntry:
      type: object
      properties:
        itHasValues:
          type: boolean
          readOnly: true
        objectId:
          type: string
          nullable: true
        objectType:
          type: string
          nullable: true
        isReadOnly:
          type: boolean
        value:
          type: object
          nullable: true
        id:
          type: string
          nullable: true
        restartRequired:
          type: boolean
        moduleId:
          type: string
          nullable: true
        groupName:
          type: string
          nullable: true
        name:
          type: string
          nullable: true
        displayName:
          type: string
          nullable: true
        isRequired:
          type: boolean
        isHidden:
          type: boolean
        isPublic:
          type: boolean
        valueType:
          allOf:
          - $ref: '#/components/schemas/SettingValueType'
        allowedValues:
          type: array
          items:
            type: object
          nullable: true
        defaultValue:
          type: object
          nullable: true
        isDictionary:
          type: boolean
        isLocalizable:
          type: boolean
        tenant:
          type: string
          nullable: true
      additionalProperties: false
    PublicStoreSetting:
      type: object
      properties:
        name:
          type: string
          nullable: true
        value:
          type: object
          nullable: true
      additionalProperties: false
    SendDynamicNotificationRequest:
      type: object
      properties:
        storeId:
          type: string
          nullable: true
        type:
          type: string
          nullable: true
        fields:
          type: object
          additionalProperties:
            type: string
            nullable: true
          nullable: true
        language:
          type: string
          nullable: true
      additionalProperties: false
  securitySchemes:
    oauth2:
      type: oauth2
      description: OAuth2 Resource Owner Password Grant flow
      flows:
        password:
          tokenUrl: /connect/token
          scopes: {}
        clientCredentials:
          tokenUrl: /connect/token
          scopes: {}
    api_key:
      type: apiKey
      description: API Key authentication
      name: api_key
      in: query
    api_key_header:
      type: apiKey
      description: API Key authentication (alternative via header)
      name: api_key
      in: header
    http-signature:
      type: http
      description: HTTP Signature authentication using Authorization header
      scheme: signature
    basic:
      type: http
      description: Basic authentication using username and password
      scheme: basic