Publish heartbeat
/{monitor_key} Send a beat to tell SignalSitter your job ran. Put measurements in the body to check them against your limits.
- Authentication
- SignalSitter publish credential · REST guide
- Hosts
ingest.signalsitter.com,eu.ingest.signalsitter.com- Operation ID
publishHeartbeat
Parameters
Section titled “Parameters”Path
monitor_keyMonitorKeyRequiredCustomer-defined monitor key.
- Minimum length
1 - Maximum length
128 - Pattern
^[A-Za-z0-9][A-Za-z0-9_-]*$
Headers
Idempotency-KeyIdempotencyKeyRequiredRequired key deduplicating the observation and configuration patch together.
- Minimum length
1 - Maximum length
255 - Pattern
^[A-Za-z0-9][A-Za-z0-9._~:/+-]*$
Signalsitter-NamestringOptional Signalsitter-Name common monitor setting.
- Minimum length
1 - Maximum length
1024
Signalsitter-IntervalstringOptional Signalsitter-Interval common monitor setting.
- Minimum length
1 - Maximum length
1024
Signalsitter-GracestringOptional Signalsitter-Grace common monitor setting.
- Minimum length
1 - Maximum length
1024
Signalsitter-HeartbeatstringOptional Signalsitter-Heartbeat common monitor setting.
- Minimum length
1 - Maximum length
1024
Signalsitter-CallbackstringOptional Signalsitter-Callback common monitor setting.
- Minimum length
1 - Maximum length
1024
Signalsitter-Metric-TypestringOptional Signalsitter-Metric-Type common monitor setting.
- Minimum length
1 - Maximum length
1024
Signalsitter-MinstringOptional Signalsitter-Min common monitor setting.
- Minimum length
1 - Maximum length
1024
Signalsitter-MaxstringOptional Signalsitter-Max common monitor setting.
- Minimum length
1 - Maximum length
1024
Signalsitter-ConfigPublishConfigHeaderCanonical unpadded base64url versioned advanced configuration.
- Minimum length
1 - Maximum length
8192 - Pattern
^[A-Za-z0-9_-]+$
- The encoded value must decode canonically to a bounded versioned UTF-8 JSON configuration envelope.
Signalsitter-JurisdictionstringRestricted-jurisdiction fallback used only on the unrestricted host.
"eu""fedramp""us"
Request body
Section titled “Request body”Optional
PublishObservationBody- Measurement objects contain one to sixteen finite numeric values with lowercase letter/number/underscore keys starting with a letter, plus bounded shallow scalar metadata.
- Numeric-looking strings are rejected as ambiguous; send a JSON number or non-numeric metadata.
Any of
Option 1
Option 2
Option 1
Option 2
Any of
Option 1
Option 2
Option 3
- Minimum length
1 - Maximum length
64 - Pattern
^[^\u0000-\u001F\u007F]*$
Responses
Section titled “Responses”PublishAcceptance- Nested configuration result status must agree with applied and ignored field lists and stable warning codes.
acceptedbooleanRequiredtrue
configurationobjectRequired6 properties
appliedFieldsarray of stringRequired- Maximum items
96
Each item
callbackSigningSecretobject6 properties
onlyShownOncebooleanRequiredtrue
overlapEndsAtstring- Format
date-time - Pattern
^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z|([+-](?:[01]\d|2[0-3]):[0-5]\d)))$
previousVersioninteger- Greater than
0 - Maximum
65535
revealedAtstringRequired- Format
date-time - Pattern
^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z|([+-](?:[01]\d|2[0-3]):[0-5]\d)))$
secretstringRequired- Pattern
^sigcb_v1_[A-Za-z0-9_-]{43}$
versionintegerRequired- Greater than
0 - Maximum
65535
configurationVersionintegerRequired- Minimum
0 - Maximum
9007199254740991
ignoredFieldsarray of stringRequired- Maximum items
96
Each item
statusstringRequired"not_requested""applied""ignored"
warningsarray of objectRequired- Maximum items
96
Each item
3 properties
codestringRequired- Minimum length
1 - Maximum length
128 - Pattern
^signalsitter\.[a-z][a-z0-9_]*$
fieldstring- Minimum length
1 - Maximum length
256 - Pattern
^[a-z][a-z0-9_]*(?:\.[a-z][a-z0-9_]*)*$
messagestringRequired- Minimum length
1 - Maximum length
512 - Pattern
^[^\u0000-\u001F\u007F]*$
detailstring- Minimum length
1 - Maximum length
200
heartbeatCadenceProvenanceobject4 properties
algorithmVersionstringRequired- Minimum length
1 - Maximum length
64
measuredIntervalMillisecondsnumberRequired- Greater than
0
observationIdsarray of stringRequired- Minimum items
1 - Maximum items
5
Each item
qualifiedAtstringRequired- Format
date-time - Pattern
^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z|([+-](?:[01]\d|2[0-3]):[0-5]\d)))$
heartbeatExpectationone ofRequiredstate: "enabled"
graceSecondsintegerSeconds of lateness tolerated after the interval. Values below 60 are raised to 60.
- Minimum
0 - Maximum
604800 - Default
60
intervalSecondsintegerRequired- Minimum
60 - Maximum
31536000
statestringRequired"enabled"
versionnumberRequired1
state: "disabled"
statestringRequired"disabled"
versionnumberRequired1
state: "automatic"
graceSecondsintegerSeconds of lateness tolerated after the interval. Values below 60 are raised to 60.
- Minimum
0 - Maximum
604800
statestringRequired"automatic"
versionnumberRequired1
heartbeatLearningobject4 properties
measuredIntervalSecondsnumber- Greater than
0
requiredSamplesintegerRequired- Greater than
0 - Maximum
64
samplesintegerRequired- Minimum
0 - Maximum
64
statusany ofRequiredOption 1
Option 2
jurisdictionstringRequired"unrestricted""eu""us""fedramp"
lifecyclestring"active""paused""archived"
monitorKeystringRequiredDeprecated V1 response spelling for the canonical monitorId; paths, request inputs, and SDK method parameters use monitorId.
- Minimum length
1 - Maximum length
128 - Pattern
^[A-Za-z0-9][A-Za-z0-9_-]*$
nextDeadlinestring- Format
date-time - Pattern
^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z|([+-](?:[01]\d|2[0-3]):[0-5]\d)))$
observationobjectRequired4 properties
acceptedAtstringRequired- Format
date-time - Pattern
^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z|([+-](?:[01]\d|2[0-3]):[0-5]\d)))$
idstringRequired- Minimum length
1 - Maximum length
128 - Pattern
^[A-Za-z0-9][A-Za-z0-9_-]*$
sequenceintegerRequired- Greater than
0 - Maximum
9007199254740991
statusany ofRequiredOption 1
Option 2
policyobject5 properties
allowanceVersionintegerRequired- Greater than
0 - Maximum
9007199254740991
checkedAtstringRequired- Format
date-time - Pattern
^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z|([+-](?:[01]\d|2[0-3]):[0-5]\d)))$
modestringRequired"fresh""offline_grace"
offlineUntilstringRequired- Format
date-time - Pattern
^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z|([+-](?:[01]\d|2[0-3]):[0-5]\d)))$
refreshAfterstringRequired- Format
date-time - Pattern
^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z|([+-](?:[01]\d|2[0-3]):[0-5]\d)))$
replayedbooleanRequiredserverTimestringRequired- Format
date-time - Pattern
^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z|([+-](?:[01]\d|2[0-3]):[0-5]\d)))$
2 response headers
X-Correlation-IDCorrelationIdRequiredCorrelation identifier shared by related operations.
- Minimum length
1 - Maximum length
128 - Pattern
^[A-Za-z0-9][A-Za-z0-9._:/-]*$
X-Request-IDRequestIdRequiredRequest identifier for this response.
- Minimum length
1 - Maximum length
128 - Pattern
^[A-Za-z0-9][A-Za-z0-9._:/-]*$
- 400Invalid publish request
- 401Publish authentication required
- 403Publish permission denied
- 409Idempotency-key conflict
- 413Publish input too large
- 415Unsupported observation media type
- 503Retryable publish uncertainty
Error bodyProblemDetails
ProblemDetails- URI references must pass full URI-reference parsing, including percent escapes, authority brackets, and scheme syntax.
- Documentation links must parse as credential-free HTTPS URLs or root-relative paths.
- retryAfterSeconds is allowed only when retryable is true.
codestringRequired- Minimum length
1 - Maximum length
128 - Pattern
^signalsitter\.[a-z][a-z0-9]*(?:[._][a-z0-9]+)*$
correlationIdstringRequired- Minimum length
1 - Maximum length
128 - Pattern
^[A-Za-z0-9][A-Za-z0-9._:/-]*$
detailstringRequired- Minimum length
1 - Maximum length
1024 - Pattern
^[^\u0000-\u001F\u007F]*$
fieldErrorsarray of object- Maximum items
32
Each item
3 properties
codestringRequired- Minimum length
1 - Maximum length
128 - Pattern
^[a-z][a-z0-9_]*$
messagestringRequired- Minimum length
1 - Maximum length
512 - Pattern
^[^\u0000-\u001F\u007F]*$
pathstringRequired- Maximum length
256
All of
Part 1
Part 2
instancestring- Minimum length
1 - Maximum length
512 - Pattern
^[^\s\u0000-\u001F\u007F]+$
limitobject7 properties
attemptedinteger- Minimum
0 - Maximum
9007199254740991
currentinteger- Minimum
0 - Maximum
9007199254740991
dimensionstringRequired"active_monitors""beat_cadence""minimum_interval_seconds""measurements_per_observation""stored_observations""observation_retention_seconds""callback_endpoints""detector_feature""api_requests_per_minute""mcp_requests_per_minute""service_state""entitlement_lease"
limitinteger- Minimum
0 - Maximum
9007199254740991
planobject3 properties
idstringRequired"free""builder""smart""scale"
namestringRequired- Minimum length
1 - Maximum length
64 - Pattern
^[^\p{Cc}\p{Cf}\p{Zl}\p{Zp}]+$
versionintegerRequired- Greater than
0 - Maximum
9007199254740991
remediationstringRequired"upgrade_plan""reduce_usage""increase_interval""remove_feature""retry_after_refresh""contact_support""export_data"
serviceStatestring"active""payment_grace""abuse_suspended""canceled""deleting"
remediationarray of object- Maximum items
8
Each item
3 properties
codestringRequired- Minimum length
1 - Maximum length
128 - Pattern
^[a-z][a-z0-9_]*$
documentationstring- Minimum length
1 - Maximum length
512
All of
Part 1
Part 2
messagestringRequired- Minimum length
1 - Maximum length
512 - Pattern
^[^\u0000-\u001F\u007F]*$
retryablebooleanRequiredretryAfterSecondsinteger- Greater than
0 - Maximum
86400
statusintegerRequired- Minimum
400 - Maximum
599
titlestringRequired- Minimum length
1 - Maximum length
160 - Pattern
^[^\u0000-\u001F\u007F]*$
typestringRequired- Minimum length
1 - Maximum length
512 - Pattern
^[^\s\u0000-\u001F\u007F]+$
Operation contract
Section titled “Operation contract”The operation exactly as it appears in the generated contract. References resolve within the OpenAPI document.
Show raw OpenAPI for publishHeartbeat
{ "operationId": "publishHeartbeat", "parameters": [ { "description": "Customer-defined monitor key.", "in": "path", "name": "monitor_key", "required": true, "schema": { "$ref": "#/components/schemas/MonitorKey" } }, { "description": "Required key deduplicating the observation and configuration patch together.", "in": "header", "name": "Idempotency-Key", "required": true, "schema": { "$ref": "#/components/schemas/IdempotencyKey" } }, { "description": "Optional Signalsitter-Name common monitor setting.", "in": "header", "name": "Signalsitter-Name", "required": false, "schema": { "maxLength": 1024, "minLength": 1, "type": "string" } }, { "description": "Optional Signalsitter-Interval common monitor setting.", "in": "header", "name": "Signalsitter-Interval", "required": false, "schema": { "maxLength": 1024, "minLength": 1, "type": "string" } }, { "description": "Optional Signalsitter-Grace common monitor setting.", "in": "header", "name": "Signalsitter-Grace", "required": false, "schema": { "maxLength": 1024, "minLength": 1, "type": "string" } }, { "description": "Optional Signalsitter-Heartbeat common monitor setting.", "in": "header", "name": "Signalsitter-Heartbeat", "required": false, "schema": { "maxLength": 1024, "minLength": 1, "type": "string" } }, { "description": "Optional Signalsitter-Callback common monitor setting.", "in": "header", "name": "Signalsitter-Callback", "required": false, "schema": { "maxLength": 1024, "minLength": 1, "type": "string" } }, { "description": "Optional Signalsitter-Metric-Type common monitor setting.", "in": "header", "name": "Signalsitter-Metric-Type", "required": false, "schema": { "maxLength": 1024, "minLength": 1, "type": "string" } }, { "description": "Optional Signalsitter-Min common monitor setting.", "in": "header", "name": "Signalsitter-Min", "required": false, "schema": { "maxLength": 1024, "minLength": 1, "type": "string" } }, { "description": "Optional Signalsitter-Max common monitor setting.", "in": "header", "name": "Signalsitter-Max", "required": false, "schema": { "maxLength": 1024, "minLength": 1, "type": "string" } }, { "description": "Optional Signalsitter-Sensitivity common monitor setting.", "in": "header", "name": "Signalsitter-Sensitivity", "required": false, "schema": { "maxLength": 1024, "minLength": 1, "type": "string" } }, { "description": "Optional Signalsitter-Mode common monitor setting.", "in": "header", "name": "Signalsitter-Mode", "required": false, "schema": { "maxLength": 1024, "minLength": 1, "type": "string" } }, { "description": "Canonical unpadded base64url versioned advanced configuration.", "in": "header", "name": "Signalsitter-Config", "required": false, "schema": { "$ref": "#/components/schemas/PublishConfigHeader" } }, { "description": "Restricted-jurisdiction fallback used only on the unrestricted host.", "in": "header", "name": "Signalsitter-Jurisdiction", "required": false, "schema": { "enum": [ "eu", "fedramp", "us" ], "type": "string" } } ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PublishObservationBody" } } }, "required": false }, "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PublishAcceptance" } } }, "description": "Observation durably accepted", "headers": { "X-Correlation-ID": { "description": "Correlation identifier shared by related operations.", "required": true, "schema": { "$ref": "#/components/schemas/CorrelationId" } }, "X-Request-ID": { "description": "Request identifier for this response.", "required": true, "schema": { "$ref": "#/components/schemas/RequestId" } } } }, "400": { "content": { "application/problem+json": { "schema": { "$ref": "#/components/schemas/ProblemDetails" } } }, "description": "Invalid publish request", "headers": { "X-Correlation-ID": { "description": "Correlation identifier shared by related operations.", "required": true, "schema": { "$ref": "#/components/schemas/CorrelationId" } }, "X-Request-ID": { "description": "Request identifier for this response.", "required": true, "schema": { "$ref": "#/components/schemas/RequestId" } } } }, "401": { "content": { "application/problem+json": { "schema": { "$ref": "#/components/schemas/ProblemDetails" } } }, "description": "Publish authentication required", "headers": { "WWW-Authenticate": { "description": "Bearer challenge for an invalid or missing publish credential.", "required": true, "schema": { "type": "string" } }, "X-Correlation-ID": { "description": "Correlation identifier shared by related operations.", "required": true, "schema": { "$ref": "#/components/schemas/CorrelationId" } }, "X-Request-ID": { "description": "Request identifier for this response.", "required": true, "schema": { "$ref": "#/components/schemas/RequestId" } } } }, "403": { "content": { "application/problem+json": { "schema": { "$ref": "#/components/schemas/ProblemDetails" } } }, "description": "Publish permission denied", "headers": { "X-Correlation-ID": { "description": "Correlation identifier shared by related operations.", "required": true, "schema": { "$ref": "#/components/schemas/CorrelationId" } }, "X-Request-ID": { "description": "Request identifier for this response.", "required": true, "schema": { "$ref": "#/components/schemas/RequestId" } } } }, "409": { "content": { "application/problem+json": { "schema": { "$ref": "#/components/schemas/ProblemDetails" } } }, "description": "Idempotency-key conflict", "headers": { "X-Correlation-ID": { "description": "Correlation identifier shared by related operations.", "required": true, "schema": { "$ref": "#/components/schemas/CorrelationId" } }, "X-Request-ID": { "description": "Request identifier for this response.", "required": true, "schema": { "$ref": "#/components/schemas/RequestId" } } } }, "413": { "content": { "application/problem+json": { "schema": { "$ref": "#/components/schemas/ProblemDetails" } } }, "description": "Publish input too large", "headers": { "X-Correlation-ID": { "description": "Correlation identifier shared by related operations.", "required": true, "schema": { "$ref": "#/components/schemas/CorrelationId" } }, "X-Request-ID": { "description": "Request identifier for this response.", "required": true, "schema": { "$ref": "#/components/schemas/RequestId" } } } }, "415": { "content": { "application/problem+json": { "schema": { "$ref": "#/components/schemas/ProblemDetails" } } }, "description": "Unsupported observation media type", "headers": { "X-Correlation-ID": { "description": "Correlation identifier shared by related operations.", "required": true, "schema": { "$ref": "#/components/schemas/CorrelationId" } }, "X-Request-ID": { "description": "Request identifier for this response.", "required": true, "schema": { "$ref": "#/components/schemas/RequestId" } } } }, "503": { "content": { "application/problem+json": { "schema": { "$ref": "#/components/schemas/ProblemDetails" } } }, "description": "Retryable publish uncertainty", "headers": { "Retry-After": { "description": "Required retry delay in seconds.", "required": true, "schema": { "$ref": "#/components/schemas/RetryAfterHeader" } }, "X-Correlation-ID": { "description": "Correlation identifier shared by related operations.", "required": true, "schema": { "$ref": "#/components/schemas/CorrelationId" } }, "X-Request-ID": { "description": "Request identifier for this response.", "required": true, "schema": { "$ref": "#/components/schemas/RequestId" } } } } }, "security": [ { "publishCredential": [] } ], "summary": "Durably accept one heartbeat observation", "tags": [ "Heartbeat ingest" ], "x-signalsitter-ingest-hosts": [ "ingest.signalsitter.com", "eu.ingest.signalsitter.com" ]}