# Models

## The GatewayReadList object

```json
{"openapi":"3.0.3","info":{"title":"IONOS Cloud - API Gateway","version":"0.0.1"},"components":{"schemas":{"GatewayReadList":{"allOf":[{"type":"object","required":["id","type","href"],"properties":{"id":{"description":"ID of the list of Gateway resources.","type":"string","format":"uuid"},"type":{"description":"The type of the resource.","type":"string","enum":["collection"]},"href":{"description":"The URL of the list of Gateway resources.","type":"string"},"items":{"description":"The list of Gateway resources.","type":"array","items":{"$ref":"#/components/schemas/GatewayRead"}}}},{"$ref":"#/components/schemas/Pagination"}]},"GatewayRead":{"type":"object","required":["id","type","href","metadata","properties"],"properties":{"id":{"type":"string","description":"The ID (UUID) of the Gateway.","format":"uuid"},"type":{"description":"The type of the resource.","type":"string","enum":["gateway"]},"href":{"description":"The URL of the Gateway.","type":"string"},"metadata":{"$ref":"#/components/schemas/MetadataWithEndpoint"},"properties":{"$ref":"#/components/schemas/Gateway"}}},"MetadataWithEndpoint":{"allOf":[{"$ref":"#/components/schemas/MetadataWithStatus"},{"type":"object","required":["publicEndpoint"],"properties":{"publicEndpoint":{"type":"string","description":"The public endpoint of the API Gateway instance.\n","readOnly":true}}}]},"MetadataWithStatus":{"allOf":[{"$ref":"#/components/schemas/Metadata"},{"type":"object","required":["status"],"properties":{"status":{"type":"string","description":"The status of the object. The status can be:\n* `AVAILABLE` - resource exists and is healthy.\n* `PROVISIONING` - resource is being created or updated.\n* `DESTROYING` - delete command was issued, the resource is being deleted.\n* `FAILED` - resource failed, details in `failureMessage`.\n","enum":["PROVISIONING","DESTROYING","AVAILABLE","FAILED"],"readOnly":true},"statusMessage":{"type":"string","description":"The message of the failure if the status is `FAILED`.\n","readOnly":true}}}]},"Metadata":{"type":"object","description":"Metadata of the resource.","properties":{"createdDate":{"type":"string","format":"date-time","description":"The ISO 8601 creation timestamp.","readOnly":true},"createdBy":{"type":"string","description":"Unique name of the identity that created the resource.","readOnly":true},"createdByUserId":{"type":"string","description":"Unique id of the identity that created the resource.","readOnly":true},"lastModifiedDate":{"type":"string","format":"date-time","description":"The ISO 8601 modified timestamp.","readOnly":true},"lastModifiedBy":{"type":"string","description":"Unique name of the identity that last modified the resource.","readOnly":true},"lastModifiedByUserId":{"type":"string","description":"Unique id of the identity that last modified the resource.","readOnly":true},"resourceURN":{"type":"string","description":"Unique name of the resource.","readOnly":true}}},"Gateway":{"type":"object","description":"An API gateway consists of the generic rules and configurations of an API Gateway.\n","required":["name"],"properties":{"name":{"type":"string","minLength":1,"maxLength":25,"pattern":"^[a-zA-Z0-9 _-]+$"},"logs":{"type":"boolean","default":false,"description":"This field enables or disables the collection and reporting of logs for observability of this instance."},"metrics":{"type":"boolean","default":false,"description":"This field enables or disables the collection and reporting of metrics for observability of this instance."},"customDomains":{"type":"array","maxItems":5,"items":{"type":"object","description":"The custom domain that the API Gateway instance should listen on.\n","properties":{"name":{"type":"string","description":"The domain name of the distribution. Field is validated as FQDN [according to RFC1123](https://pkg.go.dev/github.com/go-playground/validator/v10#hdr-Hostname_RFC_1123).","format":"fqdn"},"certificateId":{"type":"string","format":"uuid","description":"The ID of the certificate to use for the distribution."}}}},"cache":{"allOf":[{"$ref":"#/components/schemas/Cache"},{"type":"object","properties":{"override":{"type":"boolean","default":false,"description":"To enable users to override the cache settings for the routes with the this configuration."}}}]}}},"Cache":{"type":"object","description":"The cache configuration for the API Gateway instance. The TTL is 60 seconds.\n","properties":{"enable":{"type":"boolean","default":false,"description":"To enable caching."},"httpMethods":{"type":"array","items":{"type":"string","enum":["GET","POST","HEAD"]},"description":"The HTTP methods that the cache should match.\n"},"httpCodes":{"type":"array","items":{"type":"integer","minimum":200,"maximum":599},"description":"The HTTP status codes that the cache should match.\n"}}},"Pagination":{"required":["offset","limit","_links"],"description":"Pagination information. The offset and limit parameters are used to\nnavigate the list of elements. The _links object contains URLs to\nnavigate the different pages.\n","type":"object","properties":{"offset":{"$ref":"#/components/schemas/Offset"},"limit":{"$ref":"#/components/schemas/Limit"},"_links":{"$ref":"#/components/schemas/Links"}}},"Offset":{"description":"The offset specified in the request (if none was specified, the default\noffset is 0).\n","type":"integer","minimum":0,"readOnly":true},"Limit":{"description":"The limit specified in the request (if none was specified, use the\nendpoint's default pagination limit).\n","type":"integer","minimum":0,"readOnly":true},"Links":{"description":"URLs to navigate the different pages. As of now we always only return a\nsingle page.\n","type":"object","properties":{"prev":{"description":"URL (with offset and limit parameters) of the previous page; only\npresent if offset is greater than 0.\n","type":"string","format":"uri","readOnly":true},"self":{"description":"URL (with offset and limit parameters) of the current page.\n","type":"string","format":"uri","readOnly":true},"next":{"description":"URL (with offset and limit parameters) of the next page; only\npresent if offset + limit is less than the total number of elements.\n","type":"string","format":"uri","readOnly":true}}}}}}
```

## The GatewayRead object

```json
{"openapi":"3.0.3","info":{"title":"IONOS Cloud - API Gateway","version":"0.0.1"},"components":{"schemas":{"GatewayRead":{"type":"object","required":["id","type","href","metadata","properties"],"properties":{"id":{"type":"string","description":"The ID (UUID) of the Gateway.","format":"uuid"},"type":{"description":"The type of the resource.","type":"string","enum":["gateway"]},"href":{"description":"The URL of the Gateway.","type":"string"},"metadata":{"$ref":"#/components/schemas/MetadataWithEndpoint"},"properties":{"$ref":"#/components/schemas/Gateway"}}},"MetadataWithEndpoint":{"allOf":[{"$ref":"#/components/schemas/MetadataWithStatus"},{"type":"object","required":["publicEndpoint"],"properties":{"publicEndpoint":{"type":"string","description":"The public endpoint of the API Gateway instance.\n","readOnly":true}}}]},"MetadataWithStatus":{"allOf":[{"$ref":"#/components/schemas/Metadata"},{"type":"object","required":["status"],"properties":{"status":{"type":"string","description":"The status of the object. The status can be:\n* `AVAILABLE` - resource exists and is healthy.\n* `PROVISIONING` - resource is being created or updated.\n* `DESTROYING` - delete command was issued, the resource is being deleted.\n* `FAILED` - resource failed, details in `failureMessage`.\n","enum":["PROVISIONING","DESTROYING","AVAILABLE","FAILED"],"readOnly":true},"statusMessage":{"type":"string","description":"The message of the failure if the status is `FAILED`.\n","readOnly":true}}}]},"Metadata":{"type":"object","description":"Metadata of the resource.","properties":{"createdDate":{"type":"string","format":"date-time","description":"The ISO 8601 creation timestamp.","readOnly":true},"createdBy":{"type":"string","description":"Unique name of the identity that created the resource.","readOnly":true},"createdByUserId":{"type":"string","description":"Unique id of the identity that created the resource.","readOnly":true},"lastModifiedDate":{"type":"string","format":"date-time","description":"The ISO 8601 modified timestamp.","readOnly":true},"lastModifiedBy":{"type":"string","description":"Unique name of the identity that last modified the resource.","readOnly":true},"lastModifiedByUserId":{"type":"string","description":"Unique id of the identity that last modified the resource.","readOnly":true},"resourceURN":{"type":"string","description":"Unique name of the resource.","readOnly":true}}},"Gateway":{"type":"object","description":"An API gateway consists of the generic rules and configurations of an API Gateway.\n","required":["name"],"properties":{"name":{"type":"string","minLength":1,"maxLength":25,"pattern":"^[a-zA-Z0-9 _-]+$"},"logs":{"type":"boolean","default":false,"description":"This field enables or disables the collection and reporting of logs for observability of this instance."},"metrics":{"type":"boolean","default":false,"description":"This field enables or disables the collection and reporting of metrics for observability of this instance."},"customDomains":{"type":"array","maxItems":5,"items":{"type":"object","description":"The custom domain that the API Gateway instance should listen on.\n","properties":{"name":{"type":"string","description":"The domain name of the distribution. Field is validated as FQDN [according to RFC1123](https://pkg.go.dev/github.com/go-playground/validator/v10#hdr-Hostname_RFC_1123).","format":"fqdn"},"certificateId":{"type":"string","format":"uuid","description":"The ID of the certificate to use for the distribution."}}}},"cache":{"allOf":[{"$ref":"#/components/schemas/Cache"},{"type":"object","properties":{"override":{"type":"boolean","default":false,"description":"To enable users to override the cache settings for the routes with the this configuration."}}}]}}},"Cache":{"type":"object","description":"The cache configuration for the API Gateway instance. The TTL is 60 seconds.\n","properties":{"enable":{"type":"boolean","default":false,"description":"To enable caching."},"httpMethods":{"type":"array","items":{"type":"string","enum":["GET","POST","HEAD"]},"description":"The HTTP methods that the cache should match.\n"},"httpCodes":{"type":"array","items":{"type":"integer","minimum":200,"maximum":599},"description":"The HTTP status codes that the cache should match.\n"}}}}}}
```

## The GatewayEnsure object

```json
{"openapi":"3.0.3","info":{"title":"IONOS Cloud - API Gateway","version":"0.0.1"},"components":{"schemas":{"GatewayEnsure":{"type":"object","required":["id","properties"],"properties":{"id":{"type":"string","description":"The ID (UUID) of the Gateway.","format":"uuid"},"metadata":{"description":"Metadata","additionalProperties":true},"properties":{"$ref":"#/components/schemas/Gateway"}}},"Gateway":{"type":"object","description":"An API gateway consists of the generic rules and configurations of an API Gateway.\n","required":["name"],"properties":{"name":{"type":"string","minLength":1,"maxLength":25,"pattern":"^[a-zA-Z0-9 _-]+$"},"logs":{"type":"boolean","default":false,"description":"This field enables or disables the collection and reporting of logs for observability of this instance."},"metrics":{"type":"boolean","default":false,"description":"This field enables or disables the collection and reporting of metrics for observability of this instance."},"customDomains":{"type":"array","maxItems":5,"items":{"type":"object","description":"The custom domain that the API Gateway instance should listen on.\n","properties":{"name":{"type":"string","description":"The domain name of the distribution. Field is validated as FQDN [according to RFC1123](https://pkg.go.dev/github.com/go-playground/validator/v10#hdr-Hostname_RFC_1123).","format":"fqdn"},"certificateId":{"type":"string","format":"uuid","description":"The ID of the certificate to use for the distribution."}}}},"cache":{"allOf":[{"$ref":"#/components/schemas/Cache"},{"type":"object","properties":{"override":{"type":"boolean","default":false,"description":"To enable users to override the cache settings for the routes with the this configuration."}}}]}}},"Cache":{"type":"object","description":"The cache configuration for the API Gateway instance. The TTL is 60 seconds.\n","properties":{"enable":{"type":"boolean","default":false,"description":"To enable caching."},"httpMethods":{"type":"array","items":{"type":"string","enum":["GET","POST","HEAD"]},"description":"The HTTP methods that the cache should match.\n"},"httpCodes":{"type":"array","items":{"type":"integer","minimum":200,"maximum":599},"description":"The HTTP status codes that the cache should match.\n"}}}}}}
```

## The GatewayCreate object

```json
{"openapi":"3.0.3","info":{"title":"IONOS Cloud - API Gateway","version":"0.0.1"},"components":{"schemas":{"GatewayCreate":{"type":"object","required":["properties"],"properties":{"metadata":{"description":"Metadata","additionalProperties":true},"properties":{"$ref":"#/components/schemas/Gateway"}}},"Gateway":{"type":"object","description":"An API gateway consists of the generic rules and configurations of an API Gateway.\n","required":["name"],"properties":{"name":{"type":"string","minLength":1,"maxLength":25,"pattern":"^[a-zA-Z0-9 _-]+$"},"logs":{"type":"boolean","default":false,"description":"This field enables or disables the collection and reporting of logs for observability of this instance."},"metrics":{"type":"boolean","default":false,"description":"This field enables or disables the collection and reporting of metrics for observability of this instance."},"customDomains":{"type":"array","maxItems":5,"items":{"type":"object","description":"The custom domain that the API Gateway instance should listen on.\n","properties":{"name":{"type":"string","description":"The domain name of the distribution. Field is validated as FQDN [according to RFC1123](https://pkg.go.dev/github.com/go-playground/validator/v10#hdr-Hostname_RFC_1123).","format":"fqdn"},"certificateId":{"type":"string","format":"uuid","description":"The ID of the certificate to use for the distribution."}}}},"cache":{"allOf":[{"$ref":"#/components/schemas/Cache"},{"type":"object","properties":{"override":{"type":"boolean","default":false,"description":"To enable users to override the cache settings for the routes with the this configuration."}}}]}}},"Cache":{"type":"object","description":"The cache configuration for the API Gateway instance. The TTL is 60 seconds.\n","properties":{"enable":{"type":"boolean","default":false,"description":"To enable caching."},"httpMethods":{"type":"array","items":{"type":"string","enum":["GET","POST","HEAD"]},"description":"The HTTP methods that the cache should match.\n"},"httpCodes":{"type":"array","items":{"type":"integer","minimum":200,"maximum":599},"description":"The HTTP status codes that the cache should match.\n"}}}}}}
```

## The RouteReadList object

```json
{"openapi":"3.0.3","info":{"title":"IONOS Cloud - API Gateway","version":"0.0.1"},"components":{"schemas":{"RouteReadList":{"allOf":[{"type":"object","required":["id","type","href"],"properties":{"id":{"description":"ID of the list of Route resources.","type":"string","format":"uuid"},"type":{"description":"The type of the resource.","type":"string","enum":["collection"]},"href":{"description":"The URL of the list of Route resources.","type":"string"},"items":{"description":"The list of Route resources.","type":"array","items":{"$ref":"#/components/schemas/RouteRead"}}}},{"$ref":"#/components/schemas/Pagination"}]},"RouteRead":{"type":"object","required":["id","type","href","metadata","properties"],"properties":{"id":{"type":"string","description":"The ID (UUID) of the Route.","format":"uuid"},"type":{"description":"The type of the resource.","type":"string","enum":["route"]},"href":{"description":"The URL of the Route.","type":"string"},"metadata":{"$ref":"#/components/schemas/MetadataWithEndpoint"},"properties":{"$ref":"#/components/schemas/Route"}}},"MetadataWithEndpoint":{"allOf":[{"$ref":"#/components/schemas/MetadataWithStatus"},{"type":"object","required":["publicEndpoint"],"properties":{"publicEndpoint":{"type":"string","description":"The public endpoint of the API Gateway instance.\n","readOnly":true}}}]},"MetadataWithStatus":{"allOf":[{"$ref":"#/components/schemas/Metadata"},{"type":"object","required":["status"],"properties":{"status":{"type":"string","description":"The status of the object. The status can be:\n* `AVAILABLE` - resource exists and is healthy.\n* `PROVISIONING` - resource is being created or updated.\n* `DESTROYING` - delete command was issued, the resource is being deleted.\n* `FAILED` - resource failed, details in `failureMessage`.\n","enum":["PROVISIONING","DESTROYING","AVAILABLE","FAILED"],"readOnly":true},"statusMessage":{"type":"string","description":"The message of the failure if the status is `FAILED`.\n","readOnly":true}}}]},"Metadata":{"type":"object","description":"Metadata of the resource.","properties":{"createdDate":{"type":"string","format":"date-time","description":"The ISO 8601 creation timestamp.","readOnly":true},"createdBy":{"type":"string","description":"Unique name of the identity that created the resource.","readOnly":true},"createdByUserId":{"type":"string","description":"Unique id of the identity that created the resource.","readOnly":true},"lastModifiedDate":{"type":"string","format":"date-time","description":"The ISO 8601 modified timestamp.","readOnly":true},"lastModifiedBy":{"type":"string","description":"Unique name of the identity that last modified the resource.","readOnly":true},"lastModifiedByUserId":{"type":"string","description":"Unique id of the identity that last modified the resource.","readOnly":true},"resourceURN":{"type":"string","description":"Unique name of the resource.","readOnly":true}}},"Route":{"type":"object","description":"A route is a rule that maps an incoming request to a specific backend service.\n","required":["name","type","paths","methods","upstreams"],"properties":{"name":{"type":"string","minLength":1,"maxLength":25,"pattern":"^[a-zA-Z0-9 _-]+$","description":"The name of the route."},"type":{"type":"string","description":"This field specifies the protocol used by the ingress to route traffic to the backend service.","default":"http"},"paths":{"type":"array","minItems":1,"items":{"type":"string","format":"path"},"description":"The paths that the route should match.\n"},"methods":{"type":"array","items":{"type":"string","enum":["GET","POST","PUT","DELETE","PATCH","OPTIONS","HEAD","CONNECT","TRACE"]},"description":"The HTTP methods that the route should match.\n"},"websocket":{"type":"boolean","default":false,"description":"To enable websocket support."},"upstreams":{"type":"array","minItems":1,"items":{"required":["scheme","loadbalancer","host","port"],"type":"object","properties":{"scheme":{"type":"string","description":"The target URL of the upstream.","enum":["http","https","grpc","grpcs"],"default":"http"},"loadbalancer":{"type":"string","description":"The load balancer algorithm.","default":"roundrobin"},"host":{"type":"string","description":"The host of the upstream. Field is validated as hostname [according to RFC1123](https://pkg.go.dev/github.com/go-playground/validator/v10#hdr-Hostname_RFC_1123).","format":"host"},"port":{"type":"integer","description":"The port of the upstream.","default":80,"minimum":1,"maximum":65535},"weight":{"type":"integer","description":"Weight with which to split traffic to the upstream.","default":100}}}},"cache":{"$ref":"#/components/schemas/Cache"}}},"Cache":{"type":"object","description":"The cache configuration for the API Gateway instance. The TTL is 60 seconds.\n","properties":{"enable":{"type":"boolean","default":false,"description":"To enable caching."},"httpMethods":{"type":"array","items":{"type":"string","enum":["GET","POST","HEAD"]},"description":"The HTTP methods that the cache should match.\n"},"httpCodes":{"type":"array","items":{"type":"integer","minimum":200,"maximum":599},"description":"The HTTP status codes that the cache should match.\n"}}},"Pagination":{"required":["offset","limit","_links"],"description":"Pagination information. The offset and limit parameters are used to\nnavigate the list of elements. The _links object contains URLs to\nnavigate the different pages.\n","type":"object","properties":{"offset":{"$ref":"#/components/schemas/Offset"},"limit":{"$ref":"#/components/schemas/Limit"},"_links":{"$ref":"#/components/schemas/Links"}}},"Offset":{"description":"The offset specified in the request (if none was specified, the default\noffset is 0).\n","type":"integer","minimum":0,"readOnly":true},"Limit":{"description":"The limit specified in the request (if none was specified, use the\nendpoint's default pagination limit).\n","type":"integer","minimum":0,"readOnly":true},"Links":{"description":"URLs to navigate the different pages. As of now we always only return a\nsingle page.\n","type":"object","properties":{"prev":{"description":"URL (with offset and limit parameters) of the previous page; only\npresent if offset is greater than 0.\n","type":"string","format":"uri","readOnly":true},"self":{"description":"URL (with offset and limit parameters) of the current page.\n","type":"string","format":"uri","readOnly":true},"next":{"description":"URL (with offset and limit parameters) of the next page; only\npresent if offset + limit is less than the total number of elements.\n","type":"string","format":"uri","readOnly":true}}}}}}
```

## The RouteRead object

```json
{"openapi":"3.0.3","info":{"title":"IONOS Cloud - API Gateway","version":"0.0.1"},"components":{"schemas":{"RouteRead":{"type":"object","required":["id","type","href","metadata","properties"],"properties":{"id":{"type":"string","description":"The ID (UUID) of the Route.","format":"uuid"},"type":{"description":"The type of the resource.","type":"string","enum":["route"]},"href":{"description":"The URL of the Route.","type":"string"},"metadata":{"$ref":"#/components/schemas/MetadataWithEndpoint"},"properties":{"$ref":"#/components/schemas/Route"}}},"MetadataWithEndpoint":{"allOf":[{"$ref":"#/components/schemas/MetadataWithStatus"},{"type":"object","required":["publicEndpoint"],"properties":{"publicEndpoint":{"type":"string","description":"The public endpoint of the API Gateway instance.\n","readOnly":true}}}]},"MetadataWithStatus":{"allOf":[{"$ref":"#/components/schemas/Metadata"},{"type":"object","required":["status"],"properties":{"status":{"type":"string","description":"The status of the object. The status can be:\n* `AVAILABLE` - resource exists and is healthy.\n* `PROVISIONING` - resource is being created or updated.\n* `DESTROYING` - delete command was issued, the resource is being deleted.\n* `FAILED` - resource failed, details in `failureMessage`.\n","enum":["PROVISIONING","DESTROYING","AVAILABLE","FAILED"],"readOnly":true},"statusMessage":{"type":"string","description":"The message of the failure if the status is `FAILED`.\n","readOnly":true}}}]},"Metadata":{"type":"object","description":"Metadata of the resource.","properties":{"createdDate":{"type":"string","format":"date-time","description":"The ISO 8601 creation timestamp.","readOnly":true},"createdBy":{"type":"string","description":"Unique name of the identity that created the resource.","readOnly":true},"createdByUserId":{"type":"string","description":"Unique id of the identity that created the resource.","readOnly":true},"lastModifiedDate":{"type":"string","format":"date-time","description":"The ISO 8601 modified timestamp.","readOnly":true},"lastModifiedBy":{"type":"string","description":"Unique name of the identity that last modified the resource.","readOnly":true},"lastModifiedByUserId":{"type":"string","description":"Unique id of the identity that last modified the resource.","readOnly":true},"resourceURN":{"type":"string","description":"Unique name of the resource.","readOnly":true}}},"Route":{"type":"object","description":"A route is a rule that maps an incoming request to a specific backend service.\n","required":["name","type","paths","methods","upstreams"],"properties":{"name":{"type":"string","minLength":1,"maxLength":25,"pattern":"^[a-zA-Z0-9 _-]+$","description":"The name of the route."},"type":{"type":"string","description":"This field specifies the protocol used by the ingress to route traffic to the backend service.","default":"http"},"paths":{"type":"array","minItems":1,"items":{"type":"string","format":"path"},"description":"The paths that the route should match.\n"},"methods":{"type":"array","items":{"type":"string","enum":["GET","POST","PUT","DELETE","PATCH","OPTIONS","HEAD","CONNECT","TRACE"]},"description":"The HTTP methods that the route should match.\n"},"websocket":{"type":"boolean","default":false,"description":"To enable websocket support."},"upstreams":{"type":"array","minItems":1,"items":{"required":["scheme","loadbalancer","host","port"],"type":"object","properties":{"scheme":{"type":"string","description":"The target URL of the upstream.","enum":["http","https","grpc","grpcs"],"default":"http"},"loadbalancer":{"type":"string","description":"The load balancer algorithm.","default":"roundrobin"},"host":{"type":"string","description":"The host of the upstream. Field is validated as hostname [according to RFC1123](https://pkg.go.dev/github.com/go-playground/validator/v10#hdr-Hostname_RFC_1123).","format":"host"},"port":{"type":"integer","description":"The port of the upstream.","default":80,"minimum":1,"maximum":65535},"weight":{"type":"integer","description":"Weight with which to split traffic to the upstream.","default":100}}}},"cache":{"$ref":"#/components/schemas/Cache"}}},"Cache":{"type":"object","description":"The cache configuration for the API Gateway instance. The TTL is 60 seconds.\n","properties":{"enable":{"type":"boolean","default":false,"description":"To enable caching."},"httpMethods":{"type":"array","items":{"type":"string","enum":["GET","POST","HEAD"]},"description":"The HTTP methods that the cache should match.\n"},"httpCodes":{"type":"array","items":{"type":"integer","minimum":200,"maximum":599},"description":"The HTTP status codes that the cache should match.\n"}}}}}}
```

## The RouteEnsure object

```json
{"openapi":"3.0.3","info":{"title":"IONOS Cloud - API Gateway","version":"0.0.1"},"components":{"schemas":{"RouteEnsure":{"type":"object","required":["id","properties"],"properties":{"id":{"type":"string","description":"The ID (UUID) of the Route.","format":"uuid"},"metadata":{"description":"Metadata","additionalProperties":true},"properties":{"$ref":"#/components/schemas/Route"}}},"Route":{"type":"object","description":"A route is a rule that maps an incoming request to a specific backend service.\n","required":["name","type","paths","methods","upstreams"],"properties":{"name":{"type":"string","minLength":1,"maxLength":25,"pattern":"^[a-zA-Z0-9 _-]+$","description":"The name of the route."},"type":{"type":"string","description":"This field specifies the protocol used by the ingress to route traffic to the backend service.","default":"http"},"paths":{"type":"array","minItems":1,"items":{"type":"string","format":"path"},"description":"The paths that the route should match.\n"},"methods":{"type":"array","items":{"type":"string","enum":["GET","POST","PUT","DELETE","PATCH","OPTIONS","HEAD","CONNECT","TRACE"]},"description":"The HTTP methods that the route should match.\n"},"websocket":{"type":"boolean","default":false,"description":"To enable websocket support."},"upstreams":{"type":"array","minItems":1,"items":{"required":["scheme","loadbalancer","host","port"],"type":"object","properties":{"scheme":{"type":"string","description":"The target URL of the upstream.","enum":["http","https","grpc","grpcs"],"default":"http"},"loadbalancer":{"type":"string","description":"The load balancer algorithm.","default":"roundrobin"},"host":{"type":"string","description":"The host of the upstream. Field is validated as hostname [according to RFC1123](https://pkg.go.dev/github.com/go-playground/validator/v10#hdr-Hostname_RFC_1123).","format":"host"},"port":{"type":"integer","description":"The port of the upstream.","default":80,"minimum":1,"maximum":65535},"weight":{"type":"integer","description":"Weight with which to split traffic to the upstream.","default":100}}}},"cache":{"$ref":"#/components/schemas/Cache"}}},"Cache":{"type":"object","description":"The cache configuration for the API Gateway instance. The TTL is 60 seconds.\n","properties":{"enable":{"type":"boolean","default":false,"description":"To enable caching."},"httpMethods":{"type":"array","items":{"type":"string","enum":["GET","POST","HEAD"]},"description":"The HTTP methods that the cache should match.\n"},"httpCodes":{"type":"array","items":{"type":"integer","minimum":200,"maximum":599},"description":"The HTTP status codes that the cache should match.\n"}}}}}}
```

## The RouteCreate object

```json
{"openapi":"3.0.3","info":{"title":"IONOS Cloud - API Gateway","version":"0.0.1"},"components":{"schemas":{"RouteCreate":{"type":"object","required":["properties"],"properties":{"metadata":{"description":"Metadata","additionalProperties":true},"properties":{"$ref":"#/components/schemas/Route"}}},"Route":{"type":"object","description":"A route is a rule that maps an incoming request to a specific backend service.\n","required":["name","type","paths","methods","upstreams"],"properties":{"name":{"type":"string","minLength":1,"maxLength":25,"pattern":"^[a-zA-Z0-9 _-]+$","description":"The name of the route."},"type":{"type":"string","description":"This field specifies the protocol used by the ingress to route traffic to the backend service.","default":"http"},"paths":{"type":"array","minItems":1,"items":{"type":"string","format":"path"},"description":"The paths that the route should match.\n"},"methods":{"type":"array","items":{"type":"string","enum":["GET","POST","PUT","DELETE","PATCH","OPTIONS","HEAD","CONNECT","TRACE"]},"description":"The HTTP methods that the route should match.\n"},"websocket":{"type":"boolean","default":false,"description":"To enable websocket support."},"upstreams":{"type":"array","minItems":1,"items":{"required":["scheme","loadbalancer","host","port"],"type":"object","properties":{"scheme":{"type":"string","description":"The target URL of the upstream.","enum":["http","https","grpc","grpcs"],"default":"http"},"loadbalancer":{"type":"string","description":"The load balancer algorithm.","default":"roundrobin"},"host":{"type":"string","description":"The host of the upstream. Field is validated as hostname [according to RFC1123](https://pkg.go.dev/github.com/go-playground/validator/v10#hdr-Hostname_RFC_1123).","format":"host"},"port":{"type":"integer","description":"The port of the upstream.","default":80,"minimum":1,"maximum":65535},"weight":{"type":"integer","description":"Weight with which to split traffic to the upstream.","default":100}}}},"cache":{"$ref":"#/components/schemas/Cache"}}},"Cache":{"type":"object","description":"The cache configuration for the API Gateway instance. The TTL is 60 seconds.\n","properties":{"enable":{"type":"boolean","default":false,"description":"To enable caching."},"httpMethods":{"type":"array","items":{"type":"string","enum":["GET","POST","HEAD"]},"description":"The HTTP methods that the cache should match.\n"},"httpCodes":{"type":"array","items":{"type":"integer","minimum":200,"maximum":599},"description":"The HTTP status codes that the cache should match.\n"}}}}}}
```

## The Cache object

```json
{"openapi":"3.0.3","info":{"title":"IONOS Cloud - API Gateway","version":"0.0.1"},"components":{"schemas":{"Cache":{"type":"object","description":"The cache configuration for the API Gateway instance. The TTL is 60 seconds.\n","properties":{"enable":{"type":"boolean","default":false,"description":"To enable caching."},"httpMethods":{"type":"array","items":{"type":"string","enum":["GET","POST","HEAD"]},"description":"The HTTP methods that the cache should match.\n"},"httpCodes":{"type":"array","items":{"type":"integer","minimum":200,"maximum":599},"description":"The HTTP status codes that the cache should match.\n"}}}}}}
```

## The Gateway object

```json
{"openapi":"3.0.3","info":{"title":"IONOS Cloud - API Gateway","version":"0.0.1"},"components":{"schemas":{"Gateway":{"type":"object","description":"An API gateway consists of the generic rules and configurations of an API Gateway.\n","required":["name"],"properties":{"name":{"type":"string","minLength":1,"maxLength":25,"pattern":"^[a-zA-Z0-9 _-]+$"},"logs":{"type":"boolean","default":false,"description":"This field enables or disables the collection and reporting of logs for observability of this instance."},"metrics":{"type":"boolean","default":false,"description":"This field enables or disables the collection and reporting of metrics for observability of this instance."},"customDomains":{"type":"array","maxItems":5,"items":{"type":"object","description":"The custom domain that the API Gateway instance should listen on.\n","properties":{"name":{"type":"string","description":"The domain name of the distribution. Field is validated as FQDN [according to RFC1123](https://pkg.go.dev/github.com/go-playground/validator/v10#hdr-Hostname_RFC_1123).","format":"fqdn"},"certificateId":{"type":"string","format":"uuid","description":"The ID of the certificate to use for the distribution."}}}},"cache":{"allOf":[{"$ref":"#/components/schemas/Cache"},{"type":"object","properties":{"override":{"type":"boolean","default":false,"description":"To enable users to override the cache settings for the routes with the this configuration."}}}]}}},"Cache":{"type":"object","description":"The cache configuration for the API Gateway instance. The TTL is 60 seconds.\n","properties":{"enable":{"type":"boolean","default":false,"description":"To enable caching."},"httpMethods":{"type":"array","items":{"type":"string","enum":["GET","POST","HEAD"]},"description":"The HTTP methods that the cache should match.\n"},"httpCodes":{"type":"array","items":{"type":"integer","minimum":200,"maximum":599},"description":"The HTTP status codes that the cache should match.\n"}}}}}}
```

## The Route object

```json
{"openapi":"3.0.3","info":{"title":"IONOS Cloud - API Gateway","version":"0.0.1"},"components":{"schemas":{"Route":{"type":"object","description":"A route is a rule that maps an incoming request to a specific backend service.\n","required":["name","type","paths","methods","upstreams"],"properties":{"name":{"type":"string","minLength":1,"maxLength":25,"pattern":"^[a-zA-Z0-9 _-]+$","description":"The name of the route."},"type":{"type":"string","description":"This field specifies the protocol used by the ingress to route traffic to the backend service.","default":"http"},"paths":{"type":"array","minItems":1,"items":{"type":"string","format":"path"},"description":"The paths that the route should match.\n"},"methods":{"type":"array","items":{"type":"string","enum":["GET","POST","PUT","DELETE","PATCH","OPTIONS","HEAD","CONNECT","TRACE"]},"description":"The HTTP methods that the route should match.\n"},"websocket":{"type":"boolean","default":false,"description":"To enable websocket support."},"upstreams":{"type":"array","minItems":1,"items":{"required":["scheme","loadbalancer","host","port"],"type":"object","properties":{"scheme":{"type":"string","description":"The target URL of the upstream.","enum":["http","https","grpc","grpcs"],"default":"http"},"loadbalancer":{"type":"string","description":"The load balancer algorithm.","default":"roundrobin"},"host":{"type":"string","description":"The host of the upstream. Field is validated as hostname [according to RFC1123](https://pkg.go.dev/github.com/go-playground/validator/v10#hdr-Hostname_RFC_1123).","format":"host"},"port":{"type":"integer","description":"The port of the upstream.","default":80,"minimum":1,"maximum":65535},"weight":{"type":"integer","description":"Weight with which to split traffic to the upstream.","default":100}}}},"cache":{"$ref":"#/components/schemas/Cache"}}},"Cache":{"type":"object","description":"The cache configuration for the API Gateway instance. The TTL is 60 seconds.\n","properties":{"enable":{"type":"boolean","default":false,"description":"To enable caching."},"httpMethods":{"type":"array","items":{"type":"string","enum":["GET","POST","HEAD"]},"description":"The HTTP methods that the cache should match.\n"},"httpCodes":{"type":"array","items":{"type":"integer","minimum":200,"maximum":599},"description":"The HTTP status codes that the cache should match.\n"}}}}}}
```

## The MetadataWithStatus object

```json
{"openapi":"3.0.3","info":{"title":"IONOS Cloud - API Gateway","version":"0.0.1"},"components":{"schemas":{"MetadataWithStatus":{"allOf":[{"$ref":"#/components/schemas/Metadata"},{"type":"object","required":["status"],"properties":{"status":{"type":"string","description":"The status of the object. The status can be:\n* `AVAILABLE` - resource exists and is healthy.\n* `PROVISIONING` - resource is being created or updated.\n* `DESTROYING` - delete command was issued, the resource is being deleted.\n* `FAILED` - resource failed, details in `failureMessage`.\n","enum":["PROVISIONING","DESTROYING","AVAILABLE","FAILED"],"readOnly":true},"statusMessage":{"type":"string","description":"The message of the failure if the status is `FAILED`.\n","readOnly":true}}}]},"Metadata":{"type":"object","description":"Metadata of the resource.","properties":{"createdDate":{"type":"string","format":"date-time","description":"The ISO 8601 creation timestamp.","readOnly":true},"createdBy":{"type":"string","description":"Unique name of the identity that created the resource.","readOnly":true},"createdByUserId":{"type":"string","description":"Unique id of the identity that created the resource.","readOnly":true},"lastModifiedDate":{"type":"string","format":"date-time","description":"The ISO 8601 modified timestamp.","readOnly":true},"lastModifiedBy":{"type":"string","description":"Unique name of the identity that last modified the resource.","readOnly":true},"lastModifiedByUserId":{"type":"string","description":"Unique id of the identity that last modified the resource.","readOnly":true},"resourceURN":{"type":"string","description":"Unique name of the resource.","readOnly":true}}}}}}
```

## The MetadataWithEndpoint object

```json
{"openapi":"3.0.3","info":{"title":"IONOS Cloud - API Gateway","version":"0.0.1"},"components":{"schemas":{"MetadataWithEndpoint":{"allOf":[{"$ref":"#/components/schemas/MetadataWithStatus"},{"type":"object","required":["publicEndpoint"],"properties":{"publicEndpoint":{"type":"string","description":"The public endpoint of the API Gateway instance.\n","readOnly":true}}}]},"MetadataWithStatus":{"allOf":[{"$ref":"#/components/schemas/Metadata"},{"type":"object","required":["status"],"properties":{"status":{"type":"string","description":"The status of the object. The status can be:\n* `AVAILABLE` - resource exists and is healthy.\n* `PROVISIONING` - resource is being created or updated.\n* `DESTROYING` - delete command was issued, the resource is being deleted.\n* `FAILED` - resource failed, details in `failureMessage`.\n","enum":["PROVISIONING","DESTROYING","AVAILABLE","FAILED"],"readOnly":true},"statusMessage":{"type":"string","description":"The message of the failure if the status is `FAILED`.\n","readOnly":true}}}]},"Metadata":{"type":"object","description":"Metadata of the resource.","properties":{"createdDate":{"type":"string","format":"date-time","description":"The ISO 8601 creation timestamp.","readOnly":true},"createdBy":{"type":"string","description":"Unique name of the identity that created the resource.","readOnly":true},"createdByUserId":{"type":"string","description":"Unique id of the identity that created the resource.","readOnly":true},"lastModifiedDate":{"type":"string","format":"date-time","description":"The ISO 8601 modified timestamp.","readOnly":true},"lastModifiedBy":{"type":"string","description":"Unique name of the identity that last modified the resource.","readOnly":true},"lastModifiedByUserId":{"type":"string","description":"Unique id of the identity that last modified the resource.","readOnly":true},"resourceURN":{"type":"string","description":"Unique name of the resource.","readOnly":true}}}}}}
```

## The Error object

```json
{"openapi":"3.0.3","info":{"title":"IONOS Cloud - API Gateway","version":"0.0.1"},"components":{"schemas":{"Error":{"description":"The Error object is used to represent an error response from the API.\n","type":"object","properties":{"httpStatus":{"type":"integer","description":"The HTTP status code of the operation."},"messages":{"type":"array","description":"A list of error messages.\n","items":{"type":"object","properties":{"errorCode":{"type":"string","description":"Application internal error code\n"},"message":{"type":"string","description":"A human readable explanation specific to this occurrence of the\nproblem.\n"}}}}}}}}}
```

## The Metadata object

```json
{"openapi":"3.0.3","info":{"title":"IONOS Cloud - API Gateway","version":"0.0.1"},"components":{"schemas":{"Metadata":{"type":"object","description":"Metadata of the resource.","properties":{"createdDate":{"type":"string","format":"date-time","description":"The ISO 8601 creation timestamp.","readOnly":true},"createdBy":{"type":"string","description":"Unique name of the identity that created the resource.","readOnly":true},"createdByUserId":{"type":"string","description":"Unique id of the identity that created the resource.","readOnly":true},"lastModifiedDate":{"type":"string","format":"date-time","description":"The ISO 8601 modified timestamp.","readOnly":true},"lastModifiedBy":{"type":"string","description":"Unique name of the identity that last modified the resource.","readOnly":true},"lastModifiedByUserId":{"type":"string","description":"Unique id of the identity that last modified the resource.","readOnly":true},"resourceURN":{"type":"string","description":"Unique name of the resource.","readOnly":true}}}}}}
```

## The Pagination object

```json
{"openapi":"3.0.3","info":{"title":"IONOS Cloud - API Gateway","version":"0.0.1"},"components":{"schemas":{"Pagination":{"required":["offset","limit","_links"],"description":"Pagination information. The offset and limit parameters are used to\nnavigate the list of elements. The _links object contains URLs to\nnavigate the different pages.\n","type":"object","properties":{"offset":{"$ref":"#/components/schemas/Offset"},"limit":{"$ref":"#/components/schemas/Limit"},"_links":{"$ref":"#/components/schemas/Links"}}},"Offset":{"description":"The offset specified in the request (if none was specified, the default\noffset is 0).\n","type":"integer","minimum":0,"readOnly":true},"Limit":{"description":"The limit specified in the request (if none was specified, use the\nendpoint's default pagination limit).\n","type":"integer","minimum":0,"readOnly":true},"Links":{"description":"URLs to navigate the different pages. As of now we always only return a\nsingle page.\n","type":"object","properties":{"prev":{"description":"URL (with offset and limit parameters) of the previous page; only\npresent if offset is greater than 0.\n","type":"string","format":"uri","readOnly":true},"self":{"description":"URL (with offset and limit parameters) of the current page.\n","type":"string","format":"uri","readOnly":true},"next":{"description":"URL (with offset and limit parameters) of the next page; only\npresent if offset + limit is less than the total number of elements.\n","type":"string","format":"uri","readOnly":true}}}}}}
```

## The Offset object

```json
{"openapi":"3.0.3","info":{"title":"IONOS Cloud - API Gateway","version":"0.0.1"},"components":{"schemas":{"Offset":{"description":"The offset specified in the request (if none was specified, the default\noffset is 0).\n","type":"integer","minimum":0,"readOnly":true}}}}
```

## The Limit object

```json
{"openapi":"3.0.3","info":{"title":"IONOS Cloud - API Gateway","version":"0.0.1"},"components":{"schemas":{"Limit":{"description":"The limit specified in the request (if none was specified, use the\nendpoint's default pagination limit).\n","type":"integer","minimum":0,"readOnly":true}}}}
```

## The Links object

```json
{"openapi":"3.0.3","info":{"title":"IONOS Cloud - API Gateway","version":"0.0.1"},"components":{"schemas":{"Links":{"description":"URLs to navigate the different pages. As of now we always only return a\nsingle page.\n","type":"object","properties":{"prev":{"description":"URL (with offset and limit parameters) of the previous page; only\npresent if offset is greater than 0.\n","type":"string","format":"uri","readOnly":true},"self":{"description":"URL (with offset and limit parameters) of the current page.\n","type":"string","format":"uri","readOnly":true},"next":{"description":"URL (with offset and limit parameters) of the next page; only\npresent if offset + limit is less than the total number of elements.\n","type":"string","format":"uri","readOnly":true}}}}}}
```
