# Recipients ## List share recipients by share ID `client.ResourceSharing.Recipients.List(ctx, shareID, params) (*V4PagePaginationArray[RecipientListResponse], error)` **get** `/accounts/{account_id}/shares/{share_id}/recipients` List share recipients by share ID. ### Parameters - `shareID string` Share identifier tag. - `params RecipientListParams` - `AccountID param.Field[string]` Path param: Account identifier. - `IncludeResources param.Field[bool]` Query param: Include resources in the response. - `Page param.Field[int64]` Query param: Page number. - `PerPage param.Field[int64]` Query param: Number of objects to return per page. ### Returns - `type RecipientListResponse struct{…}` - `ID string` Share Recipient identifier tag. - `AccountID string` Account identifier. - `AssociationStatus RecipientListResponseAssociationStatus` Share Recipient association status. - `const RecipientListResponseAssociationStatusAssociating RecipientListResponseAssociationStatus = "associating"` - `const RecipientListResponseAssociationStatusAssociated RecipientListResponseAssociationStatus = "associated"` - `const RecipientListResponseAssociationStatusDisassociating RecipientListResponseAssociationStatus = "disassociating"` - `const RecipientListResponseAssociationStatusDisassociated RecipientListResponseAssociationStatus = "disassociated"` - `Created Time` When the share was created. - `Modified Time` When the share was modified. - `Resources []RecipientListResponseResource` - `Error string` Share Recipient error message. - `ResourceID string` Share Resource identifier. - `ResourceVersion int64` Resource Version. - `Terminal bool` Whether the error is terminal or will be continually retried. ### Example ```go package main import ( "context" "fmt" "github.com/cloudflare/cloudflare-go" "github.com/cloudflare/cloudflare-go/option" "github.com/cloudflare/cloudflare-go/resource_sharing" ) func main() { client := cloudflare.NewClient( option.WithAPIKey("144c9defac04969c7bfad8efaa8ea194"), option.WithAPIEmail("user@example.com"), ) page, err := client.ResourceSharing.Recipients.List( context.TODO(), "3fd85f74b32742f1bff64a85009dda07", resource_sharing.RecipientListParams{ AccountID: cloudflare.F("023e105f4ecef8ad9ca31a8372d0c353"), }, ) if err != nil { panic(err.Error()) } fmt.Printf("%+v\n", page) } ``` #### Response ```json { "errors": [ { "code": 1000, "message": "message", "documentation_url": "documentation_url", "source": { "pointer": "pointer" } } ], "success": true, "result": [ { "id": "3fd85f74b32742f1bff64a85009dda07", "account_id": "023e105f4ecef8ad9ca31a8372d0c353", "association_status": "associating", "created": "2023-09-21T18:56:32.624632Z", "modified": "2023-09-21T18:56:32.624632Z", "resources": [ { "error": "Recipient is missing necessary entitlement", "resource_id": "023e105f4ecef8ad9ca31a8372d0c353", "resource_version": 0, "terminal": true } ] } ], "result_info": { "count": 1, "page": 1, "per_page": 20, "total_count": 2000, "total_pages": 50 } } ``` ## Get share recipient by ID `client.ResourceSharing.Recipients.Get(ctx, shareID, recipientID, params) (*RecipientGetResponse, error)` **get** `/accounts/{account_id}/shares/{share_id}/recipients/{recipient_id}` Get share recipient by ID. ### Parameters - `shareID string` Share identifier tag. - `recipientID string` Share Recipient identifier tag. - `params RecipientGetParams` - `AccountID param.Field[string]` Path param: Account identifier. - `IncludeResources param.Field[bool]` Query param: Include resources in the response. ### Returns - `type RecipientGetResponse struct{…}` - `ID string` Share Recipient identifier tag. - `AccountID string` Account identifier. - `AssociationStatus RecipientGetResponseAssociationStatus` Share Recipient association status. - `const RecipientGetResponseAssociationStatusAssociating RecipientGetResponseAssociationStatus = "associating"` - `const RecipientGetResponseAssociationStatusAssociated RecipientGetResponseAssociationStatus = "associated"` - `const RecipientGetResponseAssociationStatusDisassociating RecipientGetResponseAssociationStatus = "disassociating"` - `const RecipientGetResponseAssociationStatusDisassociated RecipientGetResponseAssociationStatus = "disassociated"` - `Created Time` When the share was created. - `Modified Time` When the share was modified. - `Resources []RecipientGetResponseResource` - `Error string` Share Recipient error message. - `ResourceID string` Share Resource identifier. - `ResourceVersion int64` Resource Version. - `Terminal bool` Whether the error is terminal or will be continually retried. ### Example ```go package main import ( "context" "fmt" "github.com/cloudflare/cloudflare-go" "github.com/cloudflare/cloudflare-go/option" "github.com/cloudflare/cloudflare-go/resource_sharing" ) func main() { client := cloudflare.NewClient( option.WithAPIKey("144c9defac04969c7bfad8efaa8ea194"), option.WithAPIEmail("user@example.com"), ) recipient, err := client.ResourceSharing.Recipients.Get( context.TODO(), "3fd85f74b32742f1bff64a85009dda07", "3fd85f74b32742f1bff64a85009dda07", resource_sharing.RecipientGetParams{ AccountID: cloudflare.F("023e105f4ecef8ad9ca31a8372d0c353"), }, ) if err != nil { panic(err.Error()) } fmt.Printf("%+v\n", recipient.ID) } ``` #### Response ```json { "errors": [ { "code": 1000, "message": "message", "documentation_url": "documentation_url", "source": { "pointer": "pointer" } } ], "success": true, "result": { "id": "3fd85f74b32742f1bff64a85009dda07", "account_id": "023e105f4ecef8ad9ca31a8372d0c353", "association_status": "associating", "created": "2023-09-21T18:56:32.624632Z", "modified": "2023-09-21T18:56:32.624632Z", "resources": [ { "error": "Recipient is missing necessary entitlement", "resource_id": "023e105f4ecef8ad9ca31a8372d0c353", "resource_version": 0, "terminal": true } ] } } ``` ## Create a new share recipient `client.ResourceSharing.Recipients.New(ctx, shareID, params) (*RecipientNewResponse, error)` **post** `/accounts/{account_id}/shares/{share_id}/recipients` Adds a recipient to a resource share, granting them access to the shared resources. ### Parameters - `shareID string` Share identifier tag. - `params RecipientNewParams` - `PathAccountID param.Field[string]` Path param: Account identifier. - `PathAccountID param.Field[string]` Path param: Account identifier. - `OrganizationID param.Field[string]` Body param: Organization identifier. ### Returns - `type RecipientNewResponse struct{…}` - `ID string` Share Recipient identifier tag. - `AccountID string` Account identifier. - `AssociationStatus RecipientNewResponseAssociationStatus` Share Recipient association status. - `const RecipientNewResponseAssociationStatusAssociating RecipientNewResponseAssociationStatus = "associating"` - `const RecipientNewResponseAssociationStatusAssociated RecipientNewResponseAssociationStatus = "associated"` - `const RecipientNewResponseAssociationStatusDisassociating RecipientNewResponseAssociationStatus = "disassociating"` - `const RecipientNewResponseAssociationStatusDisassociated RecipientNewResponseAssociationStatus = "disassociated"` - `Created Time` When the share was created. - `Modified Time` When the share was modified. - `Resources []RecipientNewResponseResource` - `Error string` Share Recipient error message. - `ResourceID string` Share Resource identifier. - `ResourceVersion int64` Resource Version. - `Terminal bool` Whether the error is terminal or will be continually retried. ### Example ```go package main import ( "context" "fmt" "github.com/cloudflare/cloudflare-go" "github.com/cloudflare/cloudflare-go/option" "github.com/cloudflare/cloudflare-go/resource_sharing" ) func main() { client := cloudflare.NewClient( option.WithAPIKey("144c9defac04969c7bfad8efaa8ea194"), option.WithAPIEmail("user@example.com"), ) recipient, err := client.ResourceSharing.Recipients.New( context.TODO(), "3fd85f74b32742f1bff64a85009dda07", resource_sharing.RecipientNewParams{ PathAccountID: cloudflare.F("023e105f4ecef8ad9ca31a8372d0c353"), }, ) if err != nil { panic(err.Error()) } fmt.Printf("%+v\n", recipient.ID) } ``` #### Response ```json { "errors": [ { "code": 1000, "message": "message", "documentation_url": "documentation_url", "source": { "pointer": "pointer" } } ], "success": true, "result": { "id": "3fd85f74b32742f1bff64a85009dda07", "account_id": "023e105f4ecef8ad9ca31a8372d0c353", "association_status": "associating", "created": "2023-09-21T18:56:32.624632Z", "modified": "2023-09-21T18:56:32.624632Z", "resources": [ { "error": "Recipient is missing necessary entitlement", "resource_id": "023e105f4ecef8ad9ca31a8372d0c353", "resource_version": 0, "terminal": true } ] } } ``` ## Delete a share recipient `client.ResourceSharing.Recipients.Delete(ctx, shareID, recipientID, body) (*RecipientDeleteResponse, error)` **delete** `/accounts/{account_id}/shares/{share_id}/recipients/{recipient_id}` Deletion is not immediate, an updated share recipient object with a new status will be returned. ### Parameters - `shareID string` Share identifier tag. - `recipientID string` Share Recipient identifier tag. - `body RecipientDeleteParams` - `AccountID param.Field[string]` Account identifier. ### Returns - `type RecipientDeleteResponse struct{…}` - `ID string` Share Recipient identifier tag. - `AccountID string` Account identifier. - `AssociationStatus RecipientDeleteResponseAssociationStatus` Share Recipient association status. - `const RecipientDeleteResponseAssociationStatusAssociating RecipientDeleteResponseAssociationStatus = "associating"` - `const RecipientDeleteResponseAssociationStatusAssociated RecipientDeleteResponseAssociationStatus = "associated"` - `const RecipientDeleteResponseAssociationStatusDisassociating RecipientDeleteResponseAssociationStatus = "disassociating"` - `const RecipientDeleteResponseAssociationStatusDisassociated RecipientDeleteResponseAssociationStatus = "disassociated"` - `Created Time` When the share was created. - `Modified Time` When the share was modified. - `Resources []RecipientDeleteResponseResource` - `Error string` Share Recipient error message. - `ResourceID string` Share Resource identifier. - `ResourceVersion int64` Resource Version. - `Terminal bool` Whether the error is terminal or will be continually retried. ### Example ```go package main import ( "context" "fmt" "github.com/cloudflare/cloudflare-go" "github.com/cloudflare/cloudflare-go/option" "github.com/cloudflare/cloudflare-go/resource_sharing" ) func main() { client := cloudflare.NewClient( option.WithAPIKey("144c9defac04969c7bfad8efaa8ea194"), option.WithAPIEmail("user@example.com"), ) recipient, err := client.ResourceSharing.Recipients.Delete( context.TODO(), "3fd85f74b32742f1bff64a85009dda07", "3fd85f74b32742f1bff64a85009dda07", resource_sharing.RecipientDeleteParams{ AccountID: cloudflare.F("023e105f4ecef8ad9ca31a8372d0c353"), }, ) if err != nil { panic(err.Error()) } fmt.Printf("%+v\n", recipient.ID) } ``` #### Response ```json { "errors": [ { "code": 1000, "message": "message", "documentation_url": "documentation_url", "source": { "pointer": "pointer" } } ], "success": true, "result": { "id": "3fd85f74b32742f1bff64a85009dda07", "account_id": "023e105f4ecef8ad9ca31a8372d0c353", "association_status": "associating", "created": "2023-09-21T18:56:32.624632Z", "modified": "2023-09-21T18:56:32.624632Z", "resources": [ { "error": "Recipient is missing necessary entitlement", "resource_id": "023e105f4ecef8ad9ca31a8372d0c353", "resource_version": 0, "terminal": true } ] } } ```