SSC Space Go Ground-to-Ground Interface Control Document¶
Version: 2.9
Date: June 2026
Based on: OpenAPI Specification ssc-space-go.yaml (Source of Truth)
Document Information¶
| Item | Details |
|---|---|
| Document Title | SSC Space Go Ground-to-Ground Interface Control Document |
| Version | 2.9 |
| Status | Released |
| Classification | External |
Version History¶
| Version | Date | Changes | Author |
|---|---|---|---|
| 1.5 | Dec 2025 | Original DOCX version | Tharun Jose |
| 2.0 | Jan 2026 | Converted to Markdown, aligned with OpenAPI spec | Generated from OpenAPI |
| 2.1 | Feb 2026 | Added CONFIRMED → ONHOLD transition for maintenance; updated booking state descriptions | Fredrik Smedberg |
| 2.2 | Mar 2026 | Added section 8.4 Data Transfer Progress Report; added DataProductsSummary to report structure diagram | Fredrik Smedberg |
| 2.3 | Mar 2026 | Updated and extended data distribution format description with raw format |
Júlia Tribó Cabré |
| 2.4 | Mar 2026 | Added the 8.5 section about metrics details | Júlia Tribó Cabré |
| 2.5 | May 2026 | Added the availability check in the general scheduling process | Júlia Tribó Cabré |
| 2.6 | May 2026 | Updated the 4.3 section about scheduling time constraints witht he service tiers | Júlia Tribó Cabré |
| 2.7 | June 2026 | Additional contact states added, see section 4.4 for all the possible states | Mathias Nilsson |
| 2.8 | June 2026 | Updated booking horizons | Marcus Näslund |
| 2.9 | June 2026 | Breaking: replaced GET /post-contact-reports (list) with GET /post-contact-reports/{contact_id} to retrieve a single report by contact ID; updated section 8.1 |
Oliver Shin |
Associated Documents¶
| Document Name | Scope | Related Sections |
|---|---|---|
| SSC Space Go Onboarding Form | Customer Configuration Parameters | All Contents |
| SSC Space Go API Reference | Detailed API endpoint documentation | Scheduling, TLE, Post Contact Reports |
| Scheduler Sandbox ICD | Sandbox testing environment | Scheduling API testing |
Note: For testing your integration with SSC Space Go scheduling APIs, see the Scheduler Sandbox ICD.
Table of Contents¶
- Introduction and Scope
- System Architecture Overview
- Authentication and Authorization
- SSC Space Go Scheduling
- TLE Management
- TT&C Gateway
- Data Distribution
- Post Contact Reporting
- Error Handling
- Appendix
1. Introduction and Scope¶
SSC Space Go is a low-cost and autonomous ground station as a service. This Interface Control Document (ICD) defines the customer interfaces to access and benefit from the SSC Space Go service.
1.1 Key System Features¶
- Dual-band operation in S and X bands
- Simultaneous reception (downlink) in both S and X bands with both polarizations
- Switchable uplink polarization in S band between RHCP and LHCP
- Autonomous scheduling functionality
- Real-time Telemetry access and Telecommanding over defined protocols
- Payload data delivery via S3 protocol to customer endpoints
1.2 API Base URL¶
Note: All timing references in this document are in UTC according to CCSDS standards.
2. System Architecture Overview¶
flowchart TB
subgraph Customer["Customer Systems"]
MPS["Mission Planning System"]
MCC["Mission Control Center"]
DS["Data Storage (S3)"]
end
subgraph SSCGo["SSC Space Go Platform"]
API["API Gateway<br/>/api/v1"]
SCHED["Scheduler Service"]
TLE["TLE Manager"]
subgraph Sites["Ground Station Sites"]
SEES["SEES (Kiruna)"]
USAK["USAK (Alaska)"]
CAIS["CAIS (Inuvik)"]
CLPA["CLPA (Punta Arenas)"]
AUWA["AUWA (Western Australia)"]
end
subgraph SiteServices["Site Services"]
TTCGW["TT&C Gateway"]
DD["Data Distribution"]
end
end
MPS -->|"REST API"| API
API --> SCHED
API --> TLE
MCC -->|"WebSocket"| TTCGW
DD -->|"S3 Protocol"| DS
Sites --> SiteServices
2.1 Communication Protocols¶
| Interface | Protocol | Format |
|---|---|---|
| Scheduling API | REST/HTTPS | JSON |
| TLE Management | REST/HTTPS | JSON |
| TT&C Gateway | WebSocket | Protobuf |
| Data Distribution | S3 | Binary (Data Products) |
3. Authentication and Authorization¶
Access to all SSC Space Go APIs is managed through Microsoft Entra ID (formerly Azure AD). Access control and management will be provisioned as part of the onboarding process, during which the necessary credentials will be created and shared with the customer.
3.1 Authentication Flow¶
The OAuth 2.0 Client Credentials flow is used for machine-to-machine authentication:
sequenceDiagram
participant C as Client Application
participant E as Authorization Server<br/>(Microsoft Entra ID)
participant A as Resource Server<br/>(SSC Space Go API)
C->>E: 1. Request Token<br/>(client_id, client_secret, scope)
E->>E: 2. Validate client credentials
E->>C: 3. Return token (JWT)
C->>A: 4. Call API with token
A->>C: 5. Return data
The response includes how long the token is valid for and lets the customer request a new token whenever the current one expires. The token will be short-lived.
3.2 OAuth 2.0 Configuration¶
| Parameter | Description |
|---|---|
| Token URL | https://login.microsoftonline.com/{tenantId}/oauth2/v2.0/token |
| Scope | api://{clientId}/.default |
| Grant Type | client_credentials |
3.3 Required Scopes by Endpoint¶
| Scope | Endpoints |
|---|---|
contacts.view |
GET /contacts, GET /contacts/{id}, GET /post-contact-reports/{contact_id}, GET /contacts/availability |
contacts.create |
POST /contacts |
contacts.cancel |
DELETE /contacts/{id} |
spacecraft.view |
GET /spacecraft, GET /spacecraft/{id}, GET /spacecraft/{id}/service-types/*/services |
sites.view |
GET /sites, GET /sites/{id} |
tle.view |
GET /spacecraft/{id}/tle |
tle.upload |
POST /spacecraft/{id}/tle |
3.4 Using Access Tokens¶
Once you obtain an access token via the OAuth 2.0 Client Credentials flow (Section 3.1), include it in all API requests using the HTTP Authorization header with the Bearer scheme:
Token Characteristics:
- Tokens are short-lived (typically 60 minutes)
- The token response includes an
expires_infield indicating validity duration - Request a new token before the current one expires
- The system ensures customers can only access their own spacecraft and services
4. SSC Space Go Scheduling¶
This section specifies the general framework for interacting with the SSC Space Go Scheduling System. All scheduling functions are available through a RESTful web service API, enabling customers to integrate their mission planning systems directly with SSC Space Go.
For detailed API endpoint documentation, see the SSC Space Go API Reference.
Terminology¶
Throughout this document, the term "contact" refers to a scheduled communication event between a spacecraft and a ground station. The context determines its specific meaning:
| Term | Definition |
|---|---|
| Mission | An organizational grouping of one or more spacecraft (e.g., a constellation or program) |
| Spacecraft | A single satellite belonging to a mission, identified by NORAD ID and unique spacecraft_id |
| Contact Request | A customer's request to schedule a contact (API: POST /contacts) |
| Contact | The scheduled communication window with associated resources and state |
| Contact ID | Unique identifier (UUID) assigned to a contact upon creation |
| Contact Window | The time period (start to end) during which the spacecraft is above the horizon mask |
| Contact Execution | The actual satellite pass when TT&C and data services are active |
Note: Each spacecraft belongs to exactly one mission. The mission/spacecraft hierarchy supports constellation operations where multiple spacecraft share configuration and billing.
4.1 General Scheduling Process¶
The customer, through the scheduler, requests a contact for their spacecraft over a specific ground station.
Customer Responsibilities:
- Authenticate and provide a valid TLE for the contact
- Calculate the spacecraft visibilities to predict and schedule the necessary start (AOS) time and stop (LOS) time
- Poll the system to receive confirmation/rejection and check updated status of contacts
The SSC Space Go scheduling system only factors in the availability of resources required to complete the contact service request.
sequenceDiagram
participant C as Customer
participant S as SSC Space Go Scheduler
Note over C: Calculate visibility<br/>using TLE data
C->>S: Upload TLE
C->>S: GET /contacts/availability<br/>(Check Availability)
S->>C: Return availability
C->>S: POST /contacts<br/>(Request Contact)
S->>S: Validate Request
S->>C: 201 Created + contact_id (UUID)
Note over C: Use contact_id to track progress
loop Customer Polling
C->>S: GET /contacts/{contact_id}
S->>C: Return contact status
end
Note over S: Status: NEW → PENDING → CONFIRMED/REJECTED<br/>(confirmed contacts may later move to REVIEW or ONHOLD)
4.2 Contact Request Parameters¶
A booking request must specify the following parameters:
| Parameter | Description |
|---|---|
site |
Specific ground station site from the SSC Space Go network |
spacecraft |
Specific spacecraft name/acronym (crucial for constellation management) |
start |
Contact start time, rounded down to the closest minute |
end |
Contact end time, rounded up to the closest minute |
service |
Contact configuration made available from customer onboarding |
Upon reception of a valid contact request, the customer receives a response with a contact_id (UUID) that enables:
- Tracking the progress of the contact request
- Polling the system to receive confirmation/rejection
- Continuously checking the updated status of the contact
4.3 Scheduling Time Constraints¶
| Constraint | Value |
|---|---|
| Minimum Schedule Request Time | 1 hour before contact |
| Minimum Contact Duration | 1 minute |
| Maximum Contact Duration | 12 minutes |
The maximum schedule request horizon is determined by the service tier assigned to each spacecraft during onboarding. Three tiers are available — BASIC, ADVANCED, and PREMIUM — each offering a different scheduling horizon as shown below.
| Service Tier | Maximum Schedule Request Horizon |
|---|---|
| BASIC | 2 days in advance |
| ADVANCED | 4 days in advance |
| PREMIUM | 10 days in advance |
4.4 Booking States¶
Since a contact request is for an anticipated event, there are different schedule states. A confirmed contact could also update/change state depending on unforeseen resource constraints. It is the customer's responsibility to poll and check for the latest state.
stateDiagram-v2
[*] --> NEW: Contact Request
NEW --> PENDING: Resources Available
NEW --> REJECTED: No Resources
PENDING --> CONFIRMED: Site Confirmed
CONFIRMED --> REVIEW: Issue Detected
CONFIRMED --> ONHOLD: Service Unavailable
REVIEW --> CONFIRMED: Issue Resolved
ONHOLD --> CONFIRMED: Issue Resolved
ONHOLD --> CANCELLED: Customer Cancel
CONFIRMED --> ONGOING: Contact in progress
ONGOING --> POST_CONTACT: Contact is over
CANCELLED --> [*]
REJECTED --> [*]
POST_CONTACT --> SUCCESS
POST_CONTACT --> PARTIAL_SUCCESS
POST_CONTACT --> FAIL
POST_CONTACT --> UNKNOWN: All internal data is not avail
UNKNOWN --> UNKNOWN
UNKNOWN --> SUCCESS
UNKNOWN --> PARTIAL_SUCCESS
UNKNOWN --> FAIL
| State | Description |
|---|---|
NEW |
Contact request received and being processed |
PENDING |
Resources identified, awaiting site confirmation. |
CONFIRMED |
Contact confirmed, resources locked |
REJECTED |
Insufficient resources for requested period |
REVIEW |
Issues identified that may impact service quality (e.g., old TLE). Service will still be provided but might be degraded |
ONHOLD |
Service is unavailable due to internal service issues; customer may cancel or wait for resolution |
CANCELLED |
Contact has been cancelled by the customer |
ONGOING |
Contact is currently running |
POST_CONTACT |
The contact has ended; outcome validation is in progress |
SUCCESS |
All services for the contact started successfully |
PARTIAL_SUCCESS |
Some, but not all, services for the contact started successfully |
FAIL |
No services for the contact started successfully |
UNKNOWN |
Assessment data is not yet fully available |
Important: Contact cancellation requests can only be made when the contact is in an
ONHOLDstate. No other contact state shall allow the customer to request a contact cancellation.Note: If SSC Space Go resolves the issue before the contact starts, the contact will automatically transition back to
CONFIRMEDwithout any action required from the customer. If you choose to keep the contact, continue polling viaGET /contacts/{id}to monitor the state.
Cancellation Policy:
- Customers cannot directly cancel contacts in
CONFIRMED,PENDING, orREVIEWstates - The
ONHOLDstate is set by SSC Space Go when when there are internal service issues that will prevent service delivery - Once a contact transitions to
ONHOLD, the customer can decide to cancel viaDELETE /contacts/{id}
5. TLE Management¶
Customers must provide valid Two-Line Element (TLE) data for their spacecraft to enable accurate tracking during contacts.
For detailed API endpoint documentation, see the SSC Space Go API Reference.
5.1 TLE Requirements¶
- Customers are responsible for uploading and maintaining current TLE data
- TLE data is used by the ground station for antenna pointing during contacts
- The system validates TLE epoch freshness against scheduled contact times
TLE Freshness Guidelines:
| Condition | System Behavior |
|---|---|
| TLE epoch within 48 hours of contact | Normal processing |
| TLE epoch older than 48 hours | Contact may be placed in REVIEW state |
| TLE epoch significantly outdated | Contact may be rejected |
Recommendation: Upload fresh TLE data at least every 48 hours for LEO satellites to ensure optimal antenna tracking accuracy.
5.2 TLE Data Format¶
TLE data follows the standard two-line format:
{
"line1": "1 25544U 98067A 08264.51782528 -.00002182 00000-0 -11606-4 0 2927",
"line2": "2 25544 51.6416 247.4627 0006703 130.5360 325.0288 15.72125391563537"
}
6. TT&C Gateway¶
The TT&C Gateway provides real-time access to Telemetry (TM) and Telecommand (TC) services during contacts via WebSocket connections. Each site has its own TT&C Gateway; the customer needs to know the specific contact site to connect to.
6.1 TT&C Gateway Overview¶
flowchart LR
subgraph Customer["Customer MCC"]
TMC["TM Client"]
TCC["TC Client"]
end
subgraph Site["Ground Station Site"]
TTCGW["TT&C Gateway"]
ANT["Antenna System"]
end
subgraph Space["Space Segment"]
SC["Spacecraft"]
end
TMC <-->|"WebSocket/Protobuf<br/>TM Service (v2)"| TTCGW
TCC <-->|"WebSocket/Protobuf<br/>TC Service (v2)"| TTCGW
TTCGW <-->|"Baseband<br/>Interface"| ANT
ANT <-->|"S-Band<br/>RF Link"| SC
6.2 Service Specifications¶
The TT&C Gateway operates in S-band and X-band for real-time telemetry and telecommand services:
| Service | Band | Frequency | Polarization |
|---|---|---|---|
| Telecommand (uplink) | S-band | 2025 MHz - 2120 MHz | RHCP or LHCP (selectable) |
| Telemetry (downlink) | S-band | 2200 MHz - 2300 MHz | Single or simultaneous RHCP/LHCP |
| Telemetry (downlink) | X-band | 7900 MHz - 8400 MHz | Single or simultaneous RHCP/LHCP |
Note: Payload data downlink is delivered via S3 through the Data Distribution service (see Section 7).
Access to the TT&C Gateway is managed through Microsoft Entra ID (same as Scheduling API).
6.2.1 Site Gateway URLs¶
Site-specific gateway URLs (the <station_base_url> in WebSocket URLs) are provided during customer onboarding. Contact your SSC Space Go representative for access credentials and endpoint URLs for each site.
6.3 Connection Lifecycle¶
sequenceDiagram
participant C as Customer
participant GW as TT&C Gateway
participant SC as Spacecraft
Note over GW: Service instantiated<br/>~minutes before contact
C->>GW: WebSocket Connect + Auth Token
GW->>GW: Validate Token
GW->>C: Connection Established
Note over GW,SC: Contact Period
SC->>GW: Downlink TM
GW->>C: Stream TM Data
C->>GW: TC Request
GW->>SC: Uplink TC
GW->>C: TC Acknowledgment
Note over GW: Contact End
GW->>C: EndOfContact Event
GW->>C: Connection Closed
6.3.1 WebSocket Close Codes¶
The TT&C Gateway uses standard WebSocket close codes:
| Code | Name | Description |
|---|---|---|
1000 |
Normal Closure | Graceful shutdown after EndOfContact or client-initiated close |
1011 |
Internal Server Error | Server-side error during message processing |
Connection Behavior:
- After sending
EndOfContact, the gateway waits briefly (500ms) before closing the connection - Write timeout is 2 seconds - slow clients may be disconnected
- If the client does not close the connection after
EndOfContact, the gateway will close it
6.4 Telemetry (TM) Service¶
The TM service streams downlink telemetry data to the customer during contacts.
URL Schema:
Parameters:
| Parameter | Description |
|---|---|
station_base_url |
Site-specific gateway URL (provided separately) |
version |
API version (v2) |
spacecraft_id |
Unique spacecraft identifier |
site_id |
Unique site identifier |
service_id |
TM |
format |
Message format (protobuf) |
Service Characteristics:
- Service instantiated minutes before scheduled contact start
- Maximum 2 concurrent connections per TM service
- TM streamed in real-time (no buffering - network issues may cause TM loss)
- TM is also recorded and delivered via Data Distribution for offline recovery
EndOfContactevent sent at contact completionLossFrameSyncnotifications sent when frame sync is lost
TM Protobuf Message Definition:
syntax = "proto3";
import "google/protobuf/timestamp.proto";
package ssc.connect.proto.ttc_gateway.v1;
message TmServiceMsg {
oneof msg {
TmDataMsg tm_data = 1;
EndOfContact end_of_data = 2;
// Field 3 reserved
LossFrameSyncNotif loss_frame_sync = 4;
}
}
enum TmFrameQuality {
TM_FRAME_QUALITY_UNSPECIFIED = 0; // Quality unknown
TM_FRAME_QUALITY_GOOD = 1; // No errors or errors corrected
TM_FRAME_QUALITY_BAD = 2; // Contains unrecoverable errors
}
enum TmType {
TM_TYPE_UNSPECIFIED = 0;
TM_TYPE_CADU = 1; // ASM + TM Frame + ReedSolomon
TM_TYPE_CCSDS = 2; // CCSDS TM Frame (AOS or Transfer frame)
TM_TYPE_OTHER = 3; // Unspecified TM data
}
message TmDataMsg {
google.protobuf.Timestamp ert = 1; // Earth Received Time (UTC)
string site_id = 2;
TmFrameQuality frame_quality = 3;
TmType tm_type = 4;
bytes tm_data = 5;
int32 bits_corrected = 6;
}
message LossFrameSyncNotif {
google.protobuf.Timestamp notif_time = 1;
}
message EndOfContact {
google.protobuf.Timestamp notif_time = 1;
}
The TmType of the TmDataMsg delivered via TmServiceMsg is configured per spacecraft during onboarding. This determines the format of the tm_data bytes field.
Customers should confirm the expected TmType for their spacecraft with their SSC Space Go representative during onboarding.
6.5 Telecommand (TC) Service¶
The TC service enables uplink commanding to the spacecraft.
URL Schema:
Service Characteristics:
- Service instantiated minutes before scheduled contact start
- Maximum 1 connection per TC service
- Maximum command size: 65,535 bytes
Command Queue Behavior:
| Property | Value |
|---|---|
| Queue Size | 100 commands maximum |
| Queue Type | Per-connection FIFO (First-In, First-Out) |
| Overflow Behavior | New commands rejected with TC_RECEPTION_ERROR_TC_BUFFER_FULL |
| Queue Clearing | All buffered TCs cleared on MODEM connection loss or radiation error |
Commanding Status States:
| State | Definition | Status Reasons |
|---|---|---|
UNSPECIFIED |
System not ready to transmit TC | Contact not officially started, OR antenna pointing below horizon mask |
READY |
Antenna ready to transmit TCs | Contact started and antenna above horizon mask |
Note: If a command is sent when status is
UNSPECIFIED, the command will be rejected withTC_RECEPTION_ERROR_COMMAND_STATUS_NOT_READY.
TC Request Handling:
- Each TC request must contain a
tcId(monotonically increasing sequence number) - If
tcIddoes not match expected value, the request is rejected - On loss of SSC Space connectivity to MODEM or radiation error: uplink state transitions to
UNSPECIFIED, all buffered TCs are cleared withUnknownstatus - On customer-gateway connection loss: all received TCs will be radiated
TC Protobuf Message Definition:
syntax = "proto3";
import "google/protobuf/timestamp.proto";
package ssc.connect.proto.ttc_gateway.v1;
message TcServiceRequest {
oneof msg {
SendTcRequest send_tc = 1;
}
}
message TcServiceResponse {
oneof msg {
TcReceivedAck send_tc_ack = 1;
TcRadiationAck tc_rad_ack = 2;
CommandingStatusUpdate cmd_status_update = 3;
}
}
message SendTcRequest {
uint32 tc_id = 1;
bytes encoded_tc = 2;
}
enum CommandingStatus {
COMMANDING_STATUS_UNSPECIFIED = 0;
COMMANDING_STATUS_READY = 1;
}
message CommandingStatusUpdate {
google.protobuf.Timestamp update_time = 1;
CommandingStatus commanding_status = 2;
}
enum TcReceptionError {
TC_RECEPTION_ERROR_UNSPECIFIED = 0;
TC_RECEPTION_ERROR_INVALID_TC_ID = 1; // TC ID does not match expected
TC_RECEPTION_ERROR_TC_BUFFER_FULL = 2; // TC buffer is full
TC_RECEPTION_ERROR_TC_TOO_BIG = 3; // TC size exceeds maximum
TC_RECEPTION_ERROR_OUT_OF_PROVISION_TIME = 4; // TC rejected: outside contact time
TC_RECEPTION_ERROR_COMMAND_STATUS_NOT_READY = 5; // TC rejected: commanding not ready
}
message TcReceivedAck {
uint32 tc_id = 1;
bool success = 2;
optional TcReceptionError err_code = 3;
}
enum TcRadiationError {
TC_RADIATION_ERROR_UNSPECIFIED = 0;
TC_RADIATION_ERROR_PRODUCTION_ERROR = 1;
}
message TcRadiationAck {
uint32 tc_id = 1;
google.protobuf.Timestamp rad_stop_time = 2;
optional TcRadiationError err_code = 3;
}
6.6 URL Error Codes¶
| Error Code | Description |
|---|---|
| HTTP 404 | Invalid URL path parameter or service not active |
INVALID_SPACECRAFT |
Spacecraft ID not found |
INVALID_SITE |
Site ID not found |
INVALID_SERVICE |
Service configuration not found |
UNAUTHORIZED |
Authentication failed |
SERVICE_UNAVAILABLE |
Service not available for contact |
7. Data Distribution¶
SSC Space Go delivers recorded payload data and telemetry to customer-specified S3-compatible storage endpoints.
7.1 Data Distribution Overview¶
flowchart LR
subgraph Space["Space Segment"]
SAT["Spacecraft"]
end
subgraph Site["Ground Station"]
ANT["Antenna"]
SDR["SDR Modems"]
DPG["Data Product<br/>Generator"]
end
subgraph Network["WAN"]
DD["Data Distribution<br/>Service"]
end
subgraph Customer["Customer"]
S3["S3 Storage<br/>Endpoint"]
end
SAT -->|"RF"| ANT
ANT --> SDR
SDR -->|"TM Recording"| DPG
DPG -->|"Data Product"| DD
DD -->|"S3 REST API<br/>(Multipart Upload)"| S3
This ICD defines the interface for Data Product delivery over S3.
Applicable for:
- Payload data downlinked in X-band (7900 MHz - 8400 MHz)
- Telemetry recording in S-band (2200 MHz - 2300 MHz)
7.2 Delivery Endpoint Configuration¶
The Data Product will be pushed to an S3-compatible endpoint specified by the customer. The necessary information pertaining to the customer endpoint and configuration shall be shared with SSC Space during the onboarding phase.
During onboarding, the customer must specify if the defined endpoint is valid for all supported missions, or if each mission has its own appropriate endpoint.
Note: It is the customer's responsibility to notify SSC Space of any updates to endpoint configuration.
7.3 Authorization Methods¶
SSC Space relies on AWS S3 REST API for data delivery. Two authorization methods are supported:
7.3.1 Dedicated IAM User¶
The customer provisions a service principal with correct permissions for SSC Space to use.
| Configuration | Description |
|---|---|
| URL | S3 Bucket endpoint where Data Products will be delivered |
| Access Key | Access key to access the storage bucket |
| Secret Key | Associated secret key to access the storage bucket |
7.3.2 S3 Access Grants¶
The customer creates a unique account ID granting access to the storage bucket for SSC Space to request temporary credentials.
Example Response:
{
"Credentials": {
"AccessKeyId": "Example-key-id",
"SecretAccessKey": "Example-access-key",
"SessionToken": "Example-session-token",
"Expiration": "2023-06-14T18:56:45+00:00"
},
"MatchedGrantTarget": "s3://amzn-s3-demo-bucket/prefixA**"
}
7.4 S3 Compatibility¶
SSC Space Go Data Distribution is compatible with any S3-compatible Object Storage Endpoint.
- Supports multipart uploads for endpoint compatibility
- Maximum object size: 5 TB
- Part size: 5 MB - 5 GB
If there are other specific size restrictions depending on the S3 endpoint, this must be communicated during the onboarding process.
7.5 Data Product File Format¶
The Data Product file format is agreed with the customer during the onboarding phase. SSC Space Go supports two output formats:
| Format | Description |
|---|---|
| Raw | Raw recorded payload data, delivered without additional framing. Default format. |
| SSC TLM v0 | Providing structured access to individual TM Data Units with timing and quality metadata. |
The selected format applies to all Data Products delivered to the customer's endpoint. If a change of format is required after onboarding, this must be communicated to SSC Space.
7.5.1 File Naming Convention¶
| Field | Description | Example |
|---|---|---|
spacecraft |
Spacecraft acronym (agreed with customer) | EXSAT |
site |
Ground station acronym | SEES |
rfBand |
RF band (S/X/Ka) | S |
polarization |
Signal polarization (LH/RH) | RHCP |
channelId |
Channel identifier (default "0" = no redundant recording) | 0 |
startTime |
Recording start (UTC) | 2025-01-15T100000.000 |
endTime |
Recording end (UTC) | 2025-01-15T101500.000 |
contactId |
Contact UUID (version 4) | 550e8400... |
Note: Data received in both polarizations are delivered as separate data products.
7.5.2 Bit and Byte Ordering Convention¶
Bit Ordering: The first bit in the field to be transmitted or read (the leftmost significant bit) is defined as BIT 0. Following bits are named BIT 1 through BIT N-1. BIT 0 is the most significant bit and the first transmitted bit when expressing a binary value.
Byte Ordering: All multi-byte integer fields in the Data Product header use big-endian (network byte order) encoding. The most significant byte is stored first.
7.5.3 SSC TLM v0 File Structure¶
This section applies only to customers using the SSC TLM v0 format.
Show details
The Data Product File contains several blocks, each containing a Header and a TM Data Unit:flowchart TB
subgraph DataProduct["Data Product File (.tlm)"]
direction TB
B1["Block 1"]
B2["Block 2"]
dots["..."]
BN["Block N"]
end
subgraph BlockStructure["Each Block Contains:"]
direction TB
H["Header<br/>(15 bytes, Version 0)"]
TDU["TM Data Unit<br/>(variable length)"]
H --> TDU
end
B1 -.- BlockStructure
B2 -.- BlockStructure
BN -.- BlockStructure
7.5.4 Header Format (Version 0)¶
This section applies only to customers using the SSC TLM v0 format.
Show details
The header is 15 bytes total and contains information about the following TM Data Unit:
┌─────────────────────────────────────────────────────────────────────────────────────┐
│ Header Version 0 (15 bytes) │
├──────────┬─────────┬───────┬──────────────────┬───────────────────┬─────────────────┤
│ Version │ Quality │ Spare │ TM Data Unit │ Earth Received │ Number of │
│ (4 bits) │ (2 bits)│(2 bit)│ Size (3 octets) │ Time (9 octets) │ Corrected bits │
│ │ │ │ │ │ (2 octets) │
├──────────┴─────────┴───────┼──────────────────┼───────────────────┼─────────────────┤
│ 1 octet │ 3 octets │ 9 octets │ 2 octets │
└────────────────────────────┴──────────────────┴───────────────────┴─────────────────┘
| Field | Size | Format | Description |
|---|---|---|---|
| Version | 4 bits | Unsigned int | Fixed to 0 for current version |
| Quality | 2 bits | Enum | TM Data Quality: 00=Good, 01=Bad, 11=Unknown, 10=Unused |
| Spare | 2 bits | - | Reserved for future use (set to 0) |
| TM Data Unit Size | 3 octets | Unsigned int | Size of TM Data Unit (0-16,777,215 bytes) |
| Earth Received Time | 9 octets | See below | Timestamp when data was received |
| Corrected bits | 2 octets | Unsigned int | Number of bits corrected (GOOD quality only). FFFF=corrections made but count unknown |
Earth Received Time Format:
┌─────────────────────────────────────────────────────────────────┐
│ Earth Received Time (9 octets) │
├───────────────────────────────────┬─────────────────────────────┤
│ Seconds from Posix Epoch │ Nanoseconds within second │
│ (5 octets) │ (4 octets) │
└───────────────────────────────────┴─────────────────────────────┘
- Seconds from Posix Epoch: 5-byte big-endian signed integer, seconds since January 1, 1970 (midnight UTC/GMT). Valid range: approximately years 1653 to 2286.
- Nanoseconds: 4-byte big-endian unsigned integer. Value must be between 0 and 999,999,999. Any other value is considered incorrect.
7.5.5 Supported TM Protocols¶
- CCSDS TM Transfer Frame
- CCSDS AOS Frame
- CCSDS USLP Transfer Frame
- CCSDS CADU
- CSP (Cubesat Space Protocol)
7.6 Error Handling¶
Transient Errors (automatic retry):
- Temporary network outages
- Service unavailability
Permanent Errors (customer notification required):
- Customer S3 endpoint unavailable (status code 5xx)
- Credentials not valid
- Server certificate expired
- Customer storage out of disk space
Data products are retained for 72 hours (3 days) for redelivery after a delivery failure. After this retention period, undelivered data products are permanently deleted. When a delivery error occurs (e.g., S3 endpoint unavailable, invalid credentials), it is the customer's responsibility to correct the issue and notify SSC Space promptly so that redelivery can be attempted within the retention window.
8. Post Contact Reporting¶
Post Contact Reports provide an overview of completed contacts, including whether the contact was aborted, individual reports for each signal channel with payload, telemetry, or telecommand statistics, and data transfer progress reporting for data products.
For detailed API endpoint documentation, see the SSC Space Go API Reference.
8.1 Report Availability¶
- Reports are generated automatically after contact completion
- Retrieve a report with
GET /post-contact-reports/{contact_id}, which returns the complete report (including metrics) for a single contact - If a contact was aborted,
aborted: trueis set and no signal channel data is included
8.2 Report Structure¶
classDiagram
class PostContactReport {
+string contact_id
+string mission_id
+string mission_name
+string spacecraft_id
+string spacecraft_name
+string site_id
+string site_name
+string contact_service_config_id
+string contact_service_config_name
+string contact_service_config_description
+datetime start
+datetime end
+boolean aborted
+SignalChannelReport[] channels
+Metric[] antenna_metrics
+DataProductsSummary data_products_summary
}
class SignalChannelReport {
+integer channel_number
+string description
+string rf_band
+string polarization
+boolean unrecoverable_error
+TCStatistics tc_statistics
+SignalChannelMetrics metrics
}
class TCStatistics {
+integer tc_received
+integer tc_rejected
+integer tc_processed
+integer tc_radiated
}
class DataProductsSummary {
+integer data_products_created_count
+integer data_products_delivered_count
+DataProductStatus[] data_products
}
class DataProductStatus {
+string id
+string name
+string status
+boolean transfer_successful
+datetime last_transfer_attempt_at
}
class SignalChannelMetrics {
<<oneOf>>
}
SignalChannelMetrics <|-- Dvbs2PayloadMetrics
SignalChannelMetrics <|-- PayloadMetrics
SignalChannelMetrics <|-- TelemetryMetrics
class Dvbs2PayloadMetrics {
+Metric[] dvbs2_payload_metrics
}
class PayloadMetrics {
+Metric[] payload_metrics
}
class TelemetryMetrics{
+Metric[] telemetry_metrics
}
class Metric {
+string name
+string unit
+MetricValue[] values
}
class MetricValue {
+datetime time
+integer|float|string value
}
PostContactReport --> SignalChannelReport
PostContactReport --> DataProductsSummary
PostContactReport --> Metric
SignalChannelReport --> TCStatistics
SignalChannelReport --> SignalChannelMetrics
DataProductsSummary --> DataProductStatus
Metric --> MetricValue
Dvbs2PayloadMetrics --> Metric
PayloadMetrics --> Metric
TelemetryMetrics --> Metric
8.3 Unrecoverable Error¶
The unrecoverable_error field in SignalChannelReport is set to true if a signal channel's software defined radio does not start before the contact begins, resulting in an unrecoverable state for that channel.
8.4 TC Statistics Details¶
TC statistics are included in every signal channel report. For contacts without uplink traffic, all TC statistics values are zero.
Telecommand Statistics:
tc_received- Commands received from customertc_rejected- Commands that failed to be processedtc_processed- Commands successfully processedtc_radiated- Commands successfully transmitted to spacecraft
Possible reasons for a TC failing to be processed include:
- The TC is sent outside the contact time
- The TC ID does not match the expected value
- The buffer is full
- The TC size exceeds the allowed limit
- The commanding status is not ready
8.5 Metrics Details¶
Each contact report contains two types of metrics:
- Antenna metrics: Reported at the top level of the PostContactReport. These are always present for every contact.
- Receiver-specific metrics: Each signal channel has metrics depending on the type of receiver used. The receiver types are: DVB-S2 receiver, Wideband receiver, and Telemetry receiver.
Metrics are delivered for each second of a contact. Below are the expected metrics for each type:
Antenna Metrics
| Name | Unit |
|---|---|
elevation_commanded |
degrees |
elevation_actual |
degrees |
azimuth_commanded |
degrees |
azimuth_actual |
degrees |
DVB-S2 Metrics
| Name | Unit |
|---|---|
eb_n0 |
dB |
es_n0 |
dB |
carrier_frequency_offset |
MHz |
pl_frame_sync_lock |
NA |
detected_modcod |
NA |
symbol_rate |
ksym/s |
carrier_lock |
NA |
symbol_lock |
NA |
pl_frame_sync_lock_frames |
NA |
pl_frame_sync_lock_losses |
NA |
dummy_frames |
NA |
bch_correctable |
NA |
bch_uncorrectable_delta |
NA |
Payload Metrics
| Name | Unit |
|---|---|
carrier_lock |
NA |
eb_n0 |
dB |
es_n0 |
dB |
symbol_lock |
NA |
carrier_frequency_offset |
MHz |
Telemetry Metrics
| Name | Unit |
|---|---|
eb_n0 |
dB |
carrier_lock_state |
NA |
symbol_lock_state |
NA |
carrier_frequency_offset |
MHz |
8.6 Data Transfer Progress Report¶
The data_products_summary field provides visibility into data product creation and delivery status for a contact. Customers can poll the Post Contact Report to track data transfer progress as it evolves after contact completion. This field is optional and may be absent for contacts that were aborted or where no data products were created.
Summary Fields:
data_products_created_count- Total number of data products created for the contactdata_products_delivered_count- Number of data products successfully delivered
Data Product Status Fields:
Each entry in the data_products array contains:
id- Unique data product (artifact) identifiername- Data product name or locationstatus- Aggregated processing record status, one of:PROCESSING_RECORD_STATUS_UNSPECIFIED- Status not yet determinedPROCESSING_RECORD_STATUS_PENDING- Queued or currently being processedPROCESSING_RECORD_STATUS_SUCCESS- Processing completed successfullyPROCESSING_RECORD_STATUS_FAILED- Processing failedtransfer_successful- Whether the data transfer completed successfullylast_transfer_attempt_at- Timestamp of the most recent transfer attempt
9. Error Handling¶
9.1 HTTP Status Codes¶
| Code | Description |
|---|---|
200 |
Success |
201 |
Created |
204 |
No Content (successful deletion) |
400 |
Bad Request - Invalid input |
401 |
Unauthorized - Authentication required |
403 |
Forbidden - Insufficient permissions |
404 |
Not Found - Resource does not exist |
500 |
Internal Server Error |
9.2 Problem Response Format¶
Error responses use application/problem+json format:
{
"title": "Invalid Request",
"detail": "The spacecraft_id 'invalid-id' does not exist",
"trace_id": "abc123-def456-ghi789"
}
| Field | Type | Description |
|---|---|---|
title |
string | Short problem summary |
detail |
string | Detailed description |
trace_id |
string | Unique request trace ID |
9.3 Common Issues and Solutions¶
| Issue | Possible Cause | Solution |
|---|---|---|
Contact stuck in PENDING |
Site confirmation delayed | Poll periodically; contact SSC Space support if persists > 24 hours |
Contact moved to REVIEW |
TLE data outdated (> 48 hours old) | Upload fresh TLE data for the spacecraft |
| WebSocket connection refused | Service not yet instantiated | Wait until closer to contact start time; verify contact is CONFIRMED |
| Authentication fails (401) | Token expired or invalid | Request new token via OAuth 2.0 flow |
| S3 delivery failing | Endpoint unavailable or credentials invalid | Verify S3 endpoint accessibility and credential validity |
| TC commands rejected | Commanding status is UNSPECIFIED | Wait for antenna to reach READY state (above horizon mask) |
| TM frames dropped | Network latency or slow client | Ensure client can process frames within 2-second write timeout |
Tip: Always include the
trace_idfrom error responses when contacting SSC Space support for faster issue resolution.
10. Appendix¶
10.1 Acronyms¶
| Acronym | Definition |
|---|---|
| AOS | Acquisition of Signal |
| API | Application Programming Interface |
| CADU | Channel Access Data Unit |
| CCSDS | Consultative Committee for Space Data Systems |
| CSP | Cubesat Space Protocol |
| IAM | Identity and Access Management |
| ICD | Interface Control Document |
| JWT | JSON Web Token |
| LHCP | Left Hand Circular Polarization |
| LOS | Loss of Signal |
| MCC | Mission Control Center |
| NORAD | North American Aerospace Defense Command |
| RHCP | Right Hand Circular Polarization |
| SDR | Software Defined Radio |
| TC | Telecommand |
| TLE | Two-Line Element |
| TM | Telemetry |
| TT&C | Telemetry, Tracking & Command |
| USLP | Unified Space Link Protocol |
| UTC | Coordinated Universal Time |
| UUID | Universally Unique Identifier |
| WAN | Wide Area Network |
10.2 Frequency Band Definitions¶
SSC Space Go supports the following frequency bands:
| Band | Direction | Frequency Range | Service | Polarization |
|---|---|---|---|---|
| S-band | Uplink (TC) | 2025 - 2120 MHz | Telecommand | RHCP or LHCP (selectable) |
| S-band | Downlink (TM) | 2200 - 2300 MHz | Telemetry, Payload Data | RHCP, LHCP, or both |
| X-band | Downlink only | 7900 - 8400 MHz | Telemetry, Payload Data | RHCP, LHCP, or both |
Note: X-band is receive-only (no uplink capability). Payload data is delivered via S3 through the Data Distribution service.
10.3 API Quick Reference¶
For complete API endpoint documentation including request/response schemas, see the SSC Space Go API Reference.
| Method | Endpoint | Description |
|---|---|---|
| GET | /contacts |
List contacts |
| POST | /contacts |
Create contact |
| GET | /contacts/{id} |
Get contact |
| DELETE | /contacts/{id} |
Cancel contact (ONHOLD only) |
| GET | /contacts/availability |
Get availability |
| GET | /post-contact-reports/{contact_id} |
Get report for a contact |
| GET | /spacecraft |
List spacecraft |
| GET | /spacecraft/{id} |
Get spacecraft |
| GET | /spacecraft/{id}/tle |
Get TLE |
| POST | /spacecraft/{id}/tle |
Upload TLE |
| GET | /spacecraft/{id}/service-types/{type}/services |
List services |
| GET | /sites |
List sites |
| GET | /sites/{id} |
Get site |