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.