apimodel

package
v0.0.0-...-bd88772 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Apr 28, 2021 License: BSD-3-Clause Imports: 1 Imported by: 0

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

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

type LoginRequest struct {
	ClientID string `json:"username"`
	Password string `json:"password"`
}

LoginRequest is the login API request

type LoginResponse

type LoginResponse struct {
	Expire time.Time `json:"expire"`
	Token  string    `json:"token"`
}

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.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL