Documentation ¶
Overview ¶
Package apimodel describes the data types used by OONI's API.
If you edit this package to integrate the data model, remember to run `go generate ./...`.
We annotate fields with tagging. When a field should be sent over as JSON, use the usual `json` tag.
When a field needs to be sent using the query string, use the `query` tag instead. We limit what can be sent using the query string to int64, string, and bool.
The `path` tag indicates that the URL path contains a template. We will replace the value of this field with the template. Note that the template should use the Go name of the field (e.g. `{{ .ReportID }}`) as opposed to the name in the tag, which is only used when we generate the API Swagger.
The `required` tag indicates required fields. A required field cannot be empty (for the Go definition of empty).
Index ¶
- type CheckInRequest
- type CheckInRequestWebConnectivity
- type CheckInResponse
- type CheckInResponseTests
- type CheckInResponseURLInfo
- type CheckInResponseWebConnectivity
- type CheckReportIDRequest
- type CheckReportIDResponse
- type LoginRequest
- type LoginResponse
- type MeasurementMetaRequest
- type MeasurementMetaResponse
- type OpenReportRequest
- type OpenReportResponse
- type PsiphonConfigRequest
- type PsiphonConfigResponse
- type RegisterRequest
- type RegisterResponse
- type SubmitMeasurementRequest
- type SubmitMeasurementResponse
- type TestHelpersHelperInfo
- type TestHelpersRequest
- type TestHelpersResponse
- type TorTargetsRequest
- type TorTargetsResponse
- type TorTargetsTarget
- type URLsMetadata
- type URLsRequest
- type URLsResponse
- type URLsResponseURL
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type CheckInRequest ¶
type CheckInRequest struct { Charging bool `json:"charging"` OnWiFi bool `json:"on_wifi"` Platform string `json:"platform"` ProbeASN string `json:"probe_asn"` ProbeCC string `json:"probe_cc"` RunType string `json:"run_type"` SoftwareName string `json:"software_name"` SoftwareVersion string `json:"software_version"` WebConnectivity CheckInRequestWebConnectivity `json:"web_connectivity"` }
CheckInRequest is the check-in API request
type CheckInRequestWebConnectivity ¶
type CheckInRequestWebConnectivity struct {
CategoryCodes []string `json:"category_codes"`
}
CheckInRequestWebConnectivity contains WebConnectivity specific parameters to include into CheckInRequest
type CheckInResponse ¶
type CheckInResponse struct { ProbeASN string `json:"probe_asn"` ProbeCC string `json:"probe_cc"` Tests CheckInResponseTests `json:"tests"` V int64 `json:"v"` }
CheckInResponse is the check-in API response
type CheckInResponseTests ¶
type CheckInResponseTests struct {
WebConnectivity CheckInResponseWebConnectivity `json:"web_connectivity"`
}
CheckInResponseTests contains configuration for tests
type CheckInResponseURLInfo ¶
type CheckInResponseURLInfo struct { CategoryCode string `json:"category_code"` CountryCode string `json:"country_code"` URL string `json:"url"` }
CheckInResponseURLInfo contains information about an URL.
type CheckInResponseWebConnectivity ¶
type CheckInResponseWebConnectivity struct { ReportID string `json:"report_id"` URLs []CheckInResponseURLInfo `json:"urls"` }
CheckInResponseWebConnectivity contains WebConnectivity specific information of a CheckInResponse
type CheckReportIDRequest ¶
type CheckReportIDRequest struct {
ReportID string `query:"report_id" required:"true"`
}
CheckReportIDRequest is the CheckReportID request.
type CheckReportIDResponse ¶
type CheckReportIDResponse struct { Error string `json:"error"` Found bool `json:"found"` V int64 `json:"v"` }
CheckReportIDResponse is the CheckReportID response.
type LoginRequest ¶
LoginRequest is the login API request
type LoginResponse ¶
LoginResponse is the login API response
type MeasurementMetaRequest ¶
type MeasurementMetaRequest struct { ReportID string `query:"report_id" required:"true"` Full bool `query:"full"` Input string `query:"input"` }
MeasurementMetaRequest is the MeasurementMeta Request.
type MeasurementMetaResponse ¶
type MeasurementMetaResponse struct { Anomaly bool `json:"anomaly"` CategoryCode string `json:"category_code"` Confirmed bool `json:"confirmed"` Failure bool `json:"failure"` Input string `json:"input"` MeasurementStartTime string `json:"measurement_start_time"` ProbeASN int64 `json:"probe_asn"` ProbeCC string `json:"probe_cc"` RawMeasurement string `json:"raw_measurement"` ReportID string `json:"report_id"` Scores string `json:"scores"` TestName string `json:"test_name"` TestStartTime string `json:"test_start_time"` }
MeasurementMetaResponse is the MeasurementMeta Response.
type OpenReportRequest ¶
type OpenReportRequest struct { DataFormatVersion string `json:"data_format_version"` Format string `json:"format"` ProbeASN string `json:"probe_asn"` ProbeCC string `json:"probe_cc"` SoftwareName string `json:"software_name"` SoftwareVersion string `json:"software_version"` TestName string `json:"test_name"` TestStartTime string `json:"test_start_time"` TestVersion string `json:"test_version"` }
OpenReportRequest is the OpenReport request.
type OpenReportResponse ¶
type OpenReportResponse struct { BackendVersion string `json:"backend_version"` ReportID string `json:"report_id"` SupportedFormats []string `json:"supported_formats"` }
OpenReportResponse is the OpenReport response.
type PsiphonConfigRequest ¶
type PsiphonConfigRequest struct{}
PsiphonConfigRequest is the request for the PsiphonConfig API
type PsiphonConfigResponse ¶
type PsiphonConfigResponse map[string]interface{}
PsiphonConfigResponse is the response from the PsiphonConfig API
type RegisterRequest ¶
type RegisterRequest struct { // just password Password string `json:"password"` // metadata AvailableBandwidth string `json:"available_bandwidth,omitempty"` DeviceToken string `json:"device_token,omitempty"` Language string `json:"language,omitempty"` NetworkType string `json:"network_type,omitempty"` Platform string `json:"platform"` ProbeASN string `json:"probe_asn"` ProbeCC string `json:"probe_cc"` ProbeFamily string `json:"probe_family,omitempty"` ProbeTimezone string `json:"probe_timezone,omitempty"` SoftwareName string `json:"software_name"` SoftwareVersion string `json:"software_version"` SupportedTests []string `json:"supported_tests"` }
RegisterRequest is the request for the Register API.
type RegisterResponse ¶
type RegisterResponse struct {
ClientID string `json:"client_id"`
}
RegisterResponse is the response from the Register API.
type SubmitMeasurementRequest ¶
type SubmitMeasurementRequest struct { ReportID string `path:"report_id"` Format string `json:"format"` Content interface{} `json:"content"` }
SubmitMeasurementRequest is the SubmitMeasurement request.
type SubmitMeasurementResponse ¶
type SubmitMeasurementResponse struct {
MeasurementUID string `json:"measurement_uid"`
}
SubmitMeasurementResponse is the SubmitMeasurement response.
type TestHelpersHelperInfo ¶
type TestHelpersHelperInfo struct { Address string `json:"address"` Type string `json:"type"` Front string `json:"front,omitempty"` }
TestHelpersHelperInfo is a single helper within the response returned by the TestHelpers API.
type TestHelpersRequest ¶
type TestHelpersRequest struct{}
TestHelpersRequest is the TestHelpers request.
type TestHelpersResponse ¶
type TestHelpersResponse map[string][]TestHelpersHelperInfo
TestHelpersResponse is the TestHelpers response.
type TorTargetsRequest ¶
type TorTargetsRequest struct{}
TorTargetsRequest is a request for the TorTargets API.
type TorTargetsResponse ¶
type TorTargetsResponse map[string]TorTargetsTarget
TorTargetsResponse is the response from the TorTargets API.
type TorTargetsTarget ¶
type TorTargetsTarget struct { Address string `json:"address"` Name string `json:"name"` Params map[string][]string `json:"params"` Protocol string `json:"protocol"` Source string `json:"source"` }
TorTargetsTarget is a target for the tor experiment.
type URLsMetadata ¶
type URLsMetadata struct {
Count int64 `json:"count"`
}
URLsMetadata contains metadata in the URLs response.
type URLsRequest ¶
type URLsRequest struct { CategoryCodes string `query:"category_codes"` CountryCode string `query:"country_code"` Limit int64 `query:"limit"` }
URLsRequest is the URLs request.
type URLsResponse ¶
type URLsResponse struct { Metadata URLsMetadata `json:"metadata"` Results []URLsResponseURL `json:"results"` }
URLsResponse is the URLs response.
type URLsResponseURL ¶
type URLsResponseURL struct { CategoryCode string `json:"category_code"` CountryCode string `json:"country_code"` URL string `json:"url"` }
URLsResponseURL is a single URL in the URLs response.