@@ -509,6 +509,15 @@ type Setting struct {
509509 FloatMax * float32 `json:"float_max"`
510510}
511511
512+ // EndpointSpec: endpoint spec.
513+ type EndpointSpec struct {
514+ // Precisely one of Public, PrivateNetwork must be set.
515+ Public * EndpointSpecPublicDetails `json:"public,omitempty"`
516+
517+ // Precisely one of Public, PrivateNetwork must be set.
518+ PrivateNetwork * EndpointSpecPrivateNetworkDetails `json:"private_network,omitempty"`
519+ }
520+
512521// CreateInstanceRequestVolumeDetails: create instance request volume details.
513522type CreateInstanceRequestVolumeDetails struct {
514523 // VolumeSize: volume size.
@@ -519,15 +528,6 @@ type CreateInstanceRequestVolumeDetails struct {
519528 VolumeType VolumeType `json:"volume_type"`
520529}
521530
522- // EndpointSpec: endpoint spec.
523- type EndpointSpec struct {
524- // Precisely one of Public, PrivateNetwork must be set.
525- Public * EndpointSpecPublicDetails `json:"public,omitempty"`
526-
527- // Precisely one of Public, PrivateNetwork must be set.
528- PrivateNetwork * EndpointSpecPrivateNetworkDetails `json:"private_network,omitempty"`
529- }
530-
531531// Instance: instance.
532532type Instance struct {
533533 // ID: UUID of the Database Instance.
@@ -667,6 +667,18 @@ type RestoreSnapshotRequestVolumeDetails struct {
667667 VolumeType VolumeType `json:"volume_type"`
668668}
669669
670+ // CreateEndpointRequest: create endpoint request.
671+ type CreateEndpointRequest struct {
672+ // Region: region to target. If none is passed will use default region from the config.
673+ Region scw.Region `json:"-"`
674+
675+ // InstanceID: UUID of the Database Instance.
676+ InstanceID string `json:"instance_id"`
677+
678+ // Endpoint: endpointSpec used to expose your Database Instance.
679+ Endpoint * EndpointSpec `json:"endpoint"`
680+ }
681+
670682// CreateInstanceRequest: create instance request.
671683type CreateInstanceRequest struct {
672684 // Region: region to target. If none is passed will use default region from the config.
@@ -1801,3 +1813,35 @@ func (s *API) DeleteEndpoint(req *DeleteEndpointRequest, opts ...scw.RequestOpti
18011813 }
18021814 return nil
18031815}
1816+
1817+ // CreateEndpoint: Create a new endpoint for a MongoDB® Database Instance. You can add `public_network` or `private_network` specifications to the body of the request.
1818+ func (s * API ) CreateEndpoint (req * CreateEndpointRequest , opts ... scw.RequestOption ) (* Endpoint , error ) {
1819+ var err error
1820+
1821+ if req .Region == "" {
1822+ defaultRegion , _ := s .client .GetDefaultRegion ()
1823+ req .Region = defaultRegion
1824+ }
1825+
1826+ if fmt .Sprint (req .Region ) == "" {
1827+ return nil , errors .New ("field Region cannot be empty in request" )
1828+ }
1829+
1830+ scwReq := & scw.ScalewayRequest {
1831+ Method : "POST" ,
1832+ Path : "/mongodb/v1alpha1/regions/" + fmt .Sprint (req .Region ) + "/endpoints" ,
1833+ }
1834+
1835+ err = scwReq .SetBody (req )
1836+ if err != nil {
1837+ return nil , err
1838+ }
1839+
1840+ var resp Endpoint
1841+
1842+ err = s .client .Do (scwReq , & resp , opts ... )
1843+ if err != nil {
1844+ return nil , err
1845+ }
1846+ return & resp , nil
1847+ }
0 commit comments