---
title: Create Share Flow
date: 2018-05-02T00:00:00+00:00
weight: 40
geekdocRepo: https://github.com/owncloud/ocis
geekdocEditPath: edit/master/docs/services/ocm
geekdocFilePath: create_share_flow.md
geekdocCollapseSection: true
---

## OCM Create Share Flow

{{< mermaid class="text-center">}}
sequenceDiagram
    box Instance A
        participant osp as ocmsharesprovider
        participant gwa as Gateway A
        participant httpa as ocs
    end
    actor usera as User A
    box Instance B
        participant httpb as ocmd
        participant gwb as Gateway B
        participant ocmc as OCMCore
    end

    Note over usera: A shares a resource with B
    usera->>+httpa: CreateShare
        httpa->>+gwa: GetInfoByDomain
        Note left of gwa: GetInfoByDomain<br/>(ocmproviderauthorizer)
        gwa-->>-httpa: return

        httpa->>+gwa: GetAcceptedUser
        Note left of gwa: GetAcceptedUser<br/>(ocminvitemanager)
        gwa-->>-httpa: return

        httpa->>+gwa: CreateOCMShare
            gwa->>+osp: CreateOCMShare
                osp->>+gwa: Stat
                gwa-->>-osp: return

                Note left of osp: store share in repo
                
                osp->>+httpb: POST /shares
                    httpb->>+gwb: IsProviderAllowed
                    Note right of gwb: IsProviderAllowed<br/>(ocmproviderauthorizer)
                    gwb-->>-httpb: return

                    httpb->>+gwb: GetUser
                    Note right of gwb: GetUser<br/>(userprovider)
                    gwb-->>-httpb: return

                    httpb->>+gwb: CreateOCMCoreShare
                        gwb->>+ocmc: CreateOCMCoreShare
                        Note right of ocmc: StoreReceivedShare
                        ocmc-->>-gwb: return
                    gwb-->>-httpb: return
                httpb-->>-osp: return
            osp-->>-gwa: return
        gwa-->>-httpa: return
        httpa->>+gwa: Stat
            Note left of gwa: Stat<br/>(storageprovider)
        gwa-->>-httpa: return
    httpa-->>-usera: return
{{< /mermaid >}}