# Discovery ## Retrieve discovered operations on a zone rendered as OpenAPI schemas `client.APIGateway.Discovery.Get(ctx, query) (*DiscoveryGetResponse, error)` **get** `/zones/{zone_id}/api_gateway/discovery` Retrieve the most up to date view of discovered operations, rendered as OpenAPI schemas ### Parameters - `query DiscoveryGetParams` - `ZoneID param.Field[string]` Identifier. ### Returns - `type DiscoveryGetResponse struct{…}` - `Schemas []unknown` - `Timestamp Time` ### Example ```go package main import ( "context" "fmt" "github.com/cloudflare/cloudflare-go" "github.com/cloudflare/cloudflare-go/api_gateway" "github.com/cloudflare/cloudflare-go/option" ) func main() { client := cloudflare.NewClient( option.WithAPIToken("Sn3lZJTBX6kkg7OdcBUAxOO963GEIyGQqnFTOFYY"), ) discovery, err := client.APIGateway.Discovery.Get(context.TODO(), api_gateway.DiscoveryGetParams{ ZoneID: cloudflare.F("023e105f4ecef8ad9ca31a8372d0c353"), }) if err != nil { panic(err.Error()) } fmt.Printf("%+v\n", discovery.Schemas) } ``` #### Response ```json { "errors": [ { "code": 1000, "message": "message", "documentation_url": "documentation_url", "source": { "pointer": "pointer" } } ], "messages": [ { "code": 1000, "message": "message", "documentation_url": "documentation_url", "source": { "pointer": "pointer" } } ], "result": { "schemas": [ { "info": { "title": "OpenAPI JSON schema for www.example.com", "version": "1.0" }, "openapi": "3.0.0", "paths": { "... Further paths ...": {}, "/api/v1/users/{var1}": { "get": { "parameters": [ { "in": "path", "name": "var1", "required": true, "schema": { "type": "string" } } ] } } }, "servers": [ { "url": "www.example.com" } ] } ], "timestamp": "2014-01-01T05:20:00.12345Z" }, "success": true } ``` ## Domain Types ### Discovery Operation - `type DiscoveryOperation struct{…}` - `ID string` UUID. - `Endpoint string` The endpoint which can contain path parameter templates in curly braces, each will be replaced from left to right with {varN}, starting with {var1}, during insertion. This will further be Cloudflare-normalized upon insertion. See: https://developers.cloudflare.com/rules/normalization/how-it-works/. - `Host string` RFC3986-compliant host. - `LastUpdated Time` - `Method DiscoveryOperationMethod` The HTTP method used to access the endpoint. - `const DiscoveryOperationMethodGet DiscoveryOperationMethod = "GET"` - `const DiscoveryOperationMethodPost DiscoveryOperationMethod = "POST"` - `const DiscoveryOperationMethodHead DiscoveryOperationMethod = "HEAD"` - `const DiscoveryOperationMethodOptions DiscoveryOperationMethod = "OPTIONS"` - `const DiscoveryOperationMethodPut DiscoveryOperationMethod = "PUT"` - `const DiscoveryOperationMethodDelete DiscoveryOperationMethod = "DELETE"` - `const DiscoveryOperationMethodConnect DiscoveryOperationMethod = "CONNECT"` - `const DiscoveryOperationMethodPatch DiscoveryOperationMethod = "PATCH"` - `const DiscoveryOperationMethodTrace DiscoveryOperationMethod = "TRACE"` - `Origin []DiscoveryOperationOrigin` API discovery engine(s) that discovered this operation - `const DiscoveryOperationOriginMl DiscoveryOperationOrigin = "ML"` - `const DiscoveryOperationOriginSessionIdentifier DiscoveryOperationOrigin = "SessionIdentifier"` - `const DiscoveryOperationOriginLabelDiscovery DiscoveryOperationOrigin = "LabelDiscovery"` - `State DiscoveryOperationState` State of operation in API Discovery * `review` - Operation is not saved into API Shield Endpoint Management * `saved` - Operation is saved into API Shield Endpoint Management * `ignored` - Operation is marked as ignored - `const DiscoveryOperationStateReview DiscoveryOperationState = "review"` - `const DiscoveryOperationStateSaved DiscoveryOperationState = "saved"` - `const DiscoveryOperationStateIgnored DiscoveryOperationState = "ignored"` - `Features DiscoveryOperationFeatures` - `TrafficStats DiscoveryOperationFeaturesTrafficStats` - `LastUpdated Time` - `PeriodSeconds int64` The period in seconds these statistics were computed over - `Requests float64` The average number of requests seen during this period # Operations ## Retrieve discovered operations on a zone `client.APIGateway.Discovery.Operations.List(ctx, params) (*V4PagePaginationArray[DiscoveryOperation], error)` **get** `/zones/{zone_id}/api_gateway/discovery/operations` Retrieve the most up to date view of discovered operations ### Parameters - `params DiscoveryOperationListParams` - `ZoneID param.Field[string]` Path param: Identifier. - `Diff param.Field[bool]` Query param: When `true`, only return API Discovery results that are not saved into API Shield Endpoint Management - `Direction param.Field[DiscoveryOperationListParamsDirection]` Query param: Direction to order results. - `const DiscoveryOperationListParamsDirectionAsc DiscoveryOperationListParamsDirection = "asc"` - `const DiscoveryOperationListParamsDirectionDesc DiscoveryOperationListParamsDirection = "desc"` - `Endpoint param.Field[string]` Query param: Filter results to only include endpoints containing this pattern. - `Host param.Field[[]string]` Query param: Filter results to only include the specified hosts. - `Method param.Field[[]string]` Query param: Filter results to only include the specified HTTP methods. - `Order param.Field[DiscoveryOperationListParamsOrder]` Query param: Field to order by - `const DiscoveryOperationListParamsOrderHost DiscoveryOperationListParamsOrder = "host"` - `const DiscoveryOperationListParamsOrderMethod DiscoveryOperationListParamsOrder = "method"` - `const DiscoveryOperationListParamsOrderEndpoint DiscoveryOperationListParamsOrder = "endpoint"` - `const DiscoveryOperationListParamsOrderTrafficStatsRequests DiscoveryOperationListParamsOrder = "traffic_stats.requests"` - `const DiscoveryOperationListParamsOrderTrafficStatsLastUpdated DiscoveryOperationListParamsOrder = "traffic_stats.last_updated"` - `Origin param.Field[DiscoveryOperationListParamsOrigin]` Query param: Filter results to only include discovery results sourced from a particular discovery engine * `ML` - Discovered operations that were sourced using ML API Discovery * `SessionIdentifier` - Discovered operations that were sourced using Session Identifier API Discovery - `const DiscoveryOperationListParamsOriginMl DiscoveryOperationListParamsOrigin = "ML"` - `const DiscoveryOperationListParamsOriginSessionIdentifier DiscoveryOperationListParamsOrigin = "SessionIdentifier"` - `const DiscoveryOperationListParamsOriginLabelDiscovery DiscoveryOperationListParamsOrigin = "LabelDiscovery"` - `Page param.Field[int64]` Query param: Page number of paginated results. - `PerPage param.Field[int64]` Query param: Maximum number of results per page. - `State param.Field[DiscoveryOperationListParamsState]` Query param: Filter results to only include discovery results in a particular state. States are as follows * `review` - Discovered operations that are not saved into API Shield Endpoint Management * `saved` - Discovered operations that are already saved into API Shield Endpoint Management * `ignored` - Discovered operations that have been marked as ignored - `const DiscoveryOperationListParamsStateReview DiscoveryOperationListParamsState = "review"` - `const DiscoveryOperationListParamsStateSaved DiscoveryOperationListParamsState = "saved"` - `const DiscoveryOperationListParamsStateIgnored DiscoveryOperationListParamsState = "ignored"` ### Returns - `type DiscoveryOperation struct{…}` - `ID string` UUID. - `Endpoint string` The endpoint which can contain path parameter templates in curly braces, each will be replaced from left to right with {varN}, starting with {var1}, during insertion. This will further be Cloudflare-normalized upon insertion. See: https://developers.cloudflare.com/rules/normalization/how-it-works/. - `Host string` RFC3986-compliant host. - `LastUpdated Time` - `Method DiscoveryOperationMethod` The HTTP method used to access the endpoint. - `const DiscoveryOperationMethodGet DiscoveryOperationMethod = "GET"` - `const DiscoveryOperationMethodPost DiscoveryOperationMethod = "POST"` - `const DiscoveryOperationMethodHead DiscoveryOperationMethod = "HEAD"` - `const DiscoveryOperationMethodOptions DiscoveryOperationMethod = "OPTIONS"` - `const DiscoveryOperationMethodPut DiscoveryOperationMethod = "PUT"` - `const DiscoveryOperationMethodDelete DiscoveryOperationMethod = "DELETE"` - `const DiscoveryOperationMethodConnect DiscoveryOperationMethod = "CONNECT"` - `const DiscoveryOperationMethodPatch DiscoveryOperationMethod = "PATCH"` - `const DiscoveryOperationMethodTrace DiscoveryOperationMethod = "TRACE"` - `Origin []DiscoveryOperationOrigin` API discovery engine(s) that discovered this operation - `const DiscoveryOperationOriginMl DiscoveryOperationOrigin = "ML"` - `const DiscoveryOperationOriginSessionIdentifier DiscoveryOperationOrigin = "SessionIdentifier"` - `const DiscoveryOperationOriginLabelDiscovery DiscoveryOperationOrigin = "LabelDiscovery"` - `State DiscoveryOperationState` State of operation in API Discovery * `review` - Operation is not saved into API Shield Endpoint Management * `saved` - Operation is saved into API Shield Endpoint Management * `ignored` - Operation is marked as ignored - `const DiscoveryOperationStateReview DiscoveryOperationState = "review"` - `const DiscoveryOperationStateSaved DiscoveryOperationState = "saved"` - `const DiscoveryOperationStateIgnored DiscoveryOperationState = "ignored"` - `Features DiscoveryOperationFeatures` - `TrafficStats DiscoveryOperationFeaturesTrafficStats` - `LastUpdated Time` - `PeriodSeconds int64` The period in seconds these statistics were computed over - `Requests float64` The average number of requests seen during this period ### Example ```go package main import ( "context" "fmt" "github.com/cloudflare/cloudflare-go" "github.com/cloudflare/cloudflare-go/api_gateway" "github.com/cloudflare/cloudflare-go/option" ) func main() { client := cloudflare.NewClient( option.WithAPIToken("Sn3lZJTBX6kkg7OdcBUAxOO963GEIyGQqnFTOFYY"), ) page, err := client.APIGateway.Discovery.Operations.List(context.TODO(), api_gateway.DiscoveryOperationListParams{ ZoneID: 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" } } ], "messages": [ { "code": 1000, "message": "message", "documentation_url": "documentation_url", "source": { "pointer": "pointer" } } ], "result": [ { "id": "f174e90a-fafe-4643-bbbc-4a0ed4fc8415", "endpoint": "/api/v1/users/{var1}", "host": "www.example.com", "last_updated": "2014-01-01T05:20:00.12345Z", "method": "GET", "origin": [ "ML" ], "state": "review", "features": { "traffic_stats": { "last_updated": "2014-01-01T05:20:00.12345Z", "period_seconds": 3600, "requests": 1987.06 } } } ], "success": true, "result_info": { "count": 1, "page": 1, "per_page": 20, "total_count": 2000, "total_pages": 100 } } ``` ## Patch discovered operation `client.APIGateway.Discovery.Operations.Edit(ctx, operationID, params) (*DiscoveryOperationEditResponse, error)` **patch** `/zones/{zone_id}/api_gateway/discovery/operations/{operation_id}` Update the `state` on a discovered operation ### Parameters - `operationID string` UUID. - `params DiscoveryOperationEditParams` - `ZoneID param.Field[string]` Path param: Identifier. - `State param.Field[DiscoveryOperationEditParamsState]` Body param: Mark state of operation in API Discovery * `review` - Mark operation as for review * `ignored` - Mark operation as ignored - `const DiscoveryOperationEditParamsStateReview DiscoveryOperationEditParamsState = "review"` - `const DiscoveryOperationEditParamsStateIgnored DiscoveryOperationEditParamsState = "ignored"` ### Returns - `type DiscoveryOperationEditResponse struct{…}` - `State DiscoveryOperationEditResponseState` State of operation in API Discovery * `review` - Operation is not saved into API Shield Endpoint Management * `saved` - Operation is saved into API Shield Endpoint Management * `ignored` - Operation is marked as ignored - `const DiscoveryOperationEditResponseStateReview DiscoveryOperationEditResponseState = "review"` - `const DiscoveryOperationEditResponseStateSaved DiscoveryOperationEditResponseState = "saved"` - `const DiscoveryOperationEditResponseStateIgnored DiscoveryOperationEditResponseState = "ignored"` ### Example ```go package main import ( "context" "fmt" "github.com/cloudflare/cloudflare-go" "github.com/cloudflare/cloudflare-go/api_gateway" "github.com/cloudflare/cloudflare-go/option" ) func main() { client := cloudflare.NewClient( option.WithAPIToken("Sn3lZJTBX6kkg7OdcBUAxOO963GEIyGQqnFTOFYY"), ) response, err := client.APIGateway.Discovery.Operations.Edit( context.TODO(), "f174e90a-fafe-4643-bbbc-4a0ed4fc8415", api_gateway.DiscoveryOperationEditParams{ ZoneID: cloudflare.F("023e105f4ecef8ad9ca31a8372d0c353"), }, ) if err != nil { panic(err.Error()) } fmt.Printf("%+v\n", response.State) } ``` #### Response ```json { "errors": [ { "code": 1000, "message": "message", "documentation_url": "documentation_url", "source": { "pointer": "pointer" } } ], "messages": [ { "code": 1000, "message": "message", "documentation_url": "documentation_url", "source": { "pointer": "pointer" } } ], "result": { "state": "review" }, "success": true } ``` ## Patch discovered operations `client.APIGateway.Discovery.Operations.BulkEdit(ctx, params) (*DiscoveryOperationBulkEditResponse, error)` **patch** `/zones/{zone_id}/api_gateway/discovery/operations` Update the `state` on one or more discovered operations ### Parameters - `params DiscoveryOperationBulkEditParams` - `ZoneID param.Field[string]` Path param: Identifier. - `Body param.Field[map[string, DiscoveryOperationBulkEditParamsBody]]` Body param - `State DiscoveryOperationBulkEditParamsBodyState` Mark state of operation in API Discovery * `review` - Mark operation as for review * `ignored` - Mark operation as ignored - `const DiscoveryOperationBulkEditParamsBodyStateReview DiscoveryOperationBulkEditParamsBodyState = "review"` - `const DiscoveryOperationBulkEditParamsBodyStateIgnored DiscoveryOperationBulkEditParamsBodyState = "ignored"` ### Returns - `type DiscoveryOperationBulkEditResponse map[string, DiscoveryOperationBulkEditResponseItem]` - `State DiscoveryOperationBulkEditResponseItemState` Mark state of operation in API Discovery * `review` - Mark operation as for review * `ignored` - Mark operation as ignored - `const DiscoveryOperationBulkEditResponseItemStateReview DiscoveryOperationBulkEditResponseItemState = "review"` - `const DiscoveryOperationBulkEditResponseItemStateIgnored DiscoveryOperationBulkEditResponseItemState = "ignored"` ### Example ```go package main import ( "context" "fmt" "github.com/cloudflare/cloudflare-go" "github.com/cloudflare/cloudflare-go/api_gateway" "github.com/cloudflare/cloudflare-go/option" ) func main() { client := cloudflare.NewClient( option.WithAPIToken("Sn3lZJTBX6kkg7OdcBUAxOO963GEIyGQqnFTOFYY"), ) response, err := client.APIGateway.Discovery.Operations.BulkEdit(context.TODO(), api_gateway.DiscoveryOperationBulkEditParams{ ZoneID: cloudflare.F("023e105f4ecef8ad9ca31a8372d0c353"), Body: map[string]api_gateway.DiscoveryOperationBulkEditParamsBody{ "3818d821-5901-4147-a474-f5f5aec1d54e": api_gateway.DiscoveryOperationBulkEditParamsBody{ }, "b17c8043-99a0-4202-b7d9-8f7cdbee02cd": api_gateway.DiscoveryOperationBulkEditParamsBody{ }, }, }) if err != nil { panic(err.Error()) } fmt.Printf("%+v\n", response) } ``` #### Response ```json { "errors": [ { "code": 1000, "message": "message", "documentation_url": "documentation_url", "source": { "pointer": "pointer" } } ], "messages": [ { "code": 1000, "message": "message", "documentation_url": "documentation_url", "source": { "pointer": "pointer" } } ], "result": { "3818d821-5901-4147-a474-f5f5aec1d54e": { "state": "ignored" }, "b17c8043-99a0-4202-b7d9-8f7cdbee02cd": { "state": "review" } }, "success": true } ```