{"openapi":"3.1.0","info":{"title":"Flow Control Plane V1 API","summary":"Controlling the control plane","description":"API for the Flow control plane","version":""},"paths":{"/api/v1/catalog/status":{"get":{"parameters":[{"in":"query","name":"connected","description":"Whether to fetch statuses for connected specs, in addition to those named","schema":{"description":"Whether to fetch statuses for connected specs, in addition to those named","type":"boolean","default":false},"style":"form"},{"in":"query","name":"name","description":"The catalog name of the live spec to get the status of","required":true,"schema":{"description":"The catalog name of the live spec to get the status of","type":"array","items":{"type":"string"}},"style":"form"},{"in":"query","name":"short","description":"Whether to return a smaller response that excludes the `connector_status` and `controller_status` fields.","schema":{"description":"Whether to return a smaller response that excludes the `connector_status` and `controller_status` fields.","type":"boolean","default":false},"style":"form"}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/StatusResponse"}}}}}}}},"/api/v1/metrics/{*prefix}":{"get":{}},"/api/v1/openapi.json":{"get":{}},"/api/v1/auth/token":{"post":{"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TokenRequest"}}},"required":true},"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TokenResponse"}}}}}}}},"components":{"securitySchemes":{"ApiKey":{"type":"http","scheme":"bearer","bearerFormat":"JWT","description":"Estuary authentication token"}},"schemas":{"AbandonStatus":{"description":"Status of the abandonment evaluation for a task.","type":"object","properties":{"last_evaluated":{"description":"When this spec was last checked for abandonment","type":["string","null"],"format":"date-time"}}},"ActivationStatus":{"description":"Status of the task shards running in the data-plane. This records information about\nthe activations of builds in the data-plane, including any subsequent re-activations\ndue to shard failures.","type":"object","properties":{"last_activated":{"description":"The build id that was last activated in the data plane.\nIf this is less than the `last_build_id` of the controlled spec,\nthen an activation is still pending.","allOf":[{"$ref":"#/components/schemas/Id"}]},"last_activated_at":{"description":"The time at which the last data plane activation was performed.\nThis could have been in order to activate a recent publication,\nor in response to a shard failure.","type":["string","null"],"format":"date-time"},"last_failure":{"description":"The most recent shard failure to have been observed. The presence of a failure here\ndoes not necessarily mean that the shard is currently in a failed state, as it may\nhave been re-activated since the failure occurred.","anyOf":[{"$ref":"#/components/schemas/ShardFailure"},{"type":"null"}]},"next_retry":{"description":"The next time at which failed task shards will be re-activated. If this is present, then\nthere has been at least one observed shard failure, which the controller has not yet handled.","type":["string","null"],"format":"date-time"},"recent_failure_count":{"description":"Count of shard failures that have been observed over the last 24 hours for the currently activated\nbuild. This resets to 0 when a newly published build is activated.","type":"integer","format":"uint32","minimum":0},"shard_status":{"description":"If this is a task with shards, this will track their last observed status.","anyOf":[{"$ref":"#/components/schemas/ShardStatusCheck"},{"type":"null"}]}}},"AlertState":{"oneOf":[{"description":"The alert is currently firing.","type":"string","const":"firing"},{"description":"The alert has resolved. Resolved alerts may be retained in the status for a short while.","type":"string","const":"resolved"}]},"AutoDiscoverFailure":{"type":"object","properties":{"count":{"description":"The number of consecutive failures that have been observed.","type":"integer","format":"uint32","minimum":0},"first_ts":{"description":"The timestamp of the first failure in the current sequence.","type":["string"],"format":"date-time"},"last_outcome":{"description":"The discover outcome corresponding to the most recent failure. This will\nbe updated with the results of each retry until an auto-discover\nsucceeds.","allOf":[{"$ref":"#/components/schemas/AutoDiscoverOutcome"}]}},"required":["count","first_ts","last_outcome"]},"AutoDiscoverOutcome":{"description":"The results of an auto-discover attempt","type":"object","properties":{"added":{"description":"Bindings that were added to the capture.","type":"array","items":{"$ref":"#/components/schemas/DiscoverChange"}},"errors":{"description":"Errors that occurred during the discovery or evolution process.","type":"array","items":{"$ref":"#/components/schemas/Error"}},"modified":{"description":"Bindings that were modified, either to change the schema or the collection key.","type":"array","items":{"$ref":"#/components/schemas/DiscoverChange"}},"publish_result":{"description":"The result of publishing the discovered changes, if a publication was attempted.","anyOf":[{"$ref":"#/components/schemas/JobStatus"},{"type":"null"}]},"removed":{"description":"Bindings that were removed because they no longer appear in the source system.","type":"array","items":{"$ref":"#/components/schemas/DiscoverChange"}},"ts":{"description":"Time at which the disocver was attempted","type":["string"],"format":"date-time"}},"required":["ts"]},"AutoDiscoverStatus":{"type":"object","properties":{"failure":{"description":"If auto-discovery has failed, this will include information about that failure.\nThis field is cleared as soon as a successful auto-discover is run.","anyOf":[{"$ref":"#/components/schemas/AutoDiscoverFailure"},{"type":"null"}]},"interval":{"description":"The interval at which auto-discovery is run. This is normally unset, which uses\nthe default interval.","type":["string","null"],"pattern":"^\\d+(s|m|h)$"},"last_success":{"description":"The outcome of the last _successful_ auto-discover. If `failure` is set,\nthen that will typically be more recent than `last_success`.","anyOf":[{"$ref":"#/components/schemas/AutoDiscoverOutcome"},{"type":"null"}]},"next_at":{"description":"Time at which the next auto-discover should be run.","type":["string"],"format":"date-time","default":null},"pending_publish":{"description":"The outcome of the a recent discover, which is about to be published.\nThis will typically only be observed if the publication failed for some\nreason.","anyOf":[{"$ref":"#/components/schemas/AutoDiscoverOutcome"},{"type":"null"}]}}},"CaptureStatus":{"description":"Status of a capture controller","type":"object","properties":{"abandon":{"anyOf":[{"$ref":"#/components/schemas/AbandonStatus"},{"type":"null"}]},"activation":{"allOf":[{"$ref":"#/components/schemas/ActivationStatus"}],"default":{}},"alerts":{"type":"object","additionalProperties":{"$ref":"#/components/schemas/ControllerAlert"}},"auto_discover":{"anyOf":[{"$ref":"#/components/schemas/AutoDiscoverStatus"},{"type":"null"}]},"config_updates":{"anyOf":[{"$ref":"#/components/schemas/PendingConfigUpdateStatus"},{"type":"null"}]},"publications":{"allOf":[{"$ref":"#/components/schemas/PublicationStatus"}],"default":{"history":[]}}}},"CatalogType":{"type":"string","enum":["capture","collection","materialization","test"]},"Collection":{"description":"Collection names are paths of Unicode letters, numbers, '-', '_', or '.'.\nEach path component is separated by a slash '/',\nand a name may not begin or end in a '/'.","type":"string","examples":["acmeCo/collection"],"pattern":"^[\\p{Letter}\\p{Number}\\-_\\.]+(/[\\p{Letter}\\p{Number}\\-_\\.]+)*$"},"CollectionStatus":{"description":"The status of a collection controller","type":"object","properties":{"abandon":{"anyOf":[{"$ref":"#/components/schemas/AbandonStatus"},{"type":"null"}]},"activation":{"allOf":[{"$ref":"#/components/schemas/ActivationStatus"}],"default":{}},"alerts":{"type":"object","additionalProperties":{"$ref":"#/components/schemas/ControllerAlert"}},"inferred_schema":{"anyOf":[{"$ref":"#/components/schemas/InferredSchemaStatus"},{"type":"null"}]},"publications":{"allOf":[{"$ref":"#/components/schemas/PublicationStatus"}],"default":{"history":[]}}}},"ConnectorStatus":{"description":"The shape of a connector status, which matches that of an ops::Log.","type":"object","properties":{"fields":{"description":"Arbitrary JSON that can be used to communicate additional details. The\nspecific fields and their meanings are entirely up to the connector.","type":"object","additionalProperties":true,"default":{}},"message":{"description":"The message is meant to be presented to users, and may use Markdown formatting.","type":"string"},"shard":{"description":"The shard that last updated the status","allOf":[{"$ref":"#/components/schemas/ShardRef"}]},"ts":{"description":"The time at which the status was last updated","type":["string"],"format":"date-time"}},"required":["shard","ts","message"]},"ControllerAlert":{"type":"object","properties":{"count":{"description":"The number of failures.","type":"integer","format":"uint32","minimum":0},"error":{"description":"The error message associated with the alert.","type":"string"},"first_ts":{"description":"The time when the alert first triggered.","type":["string"],"format":"date-time"},"last_ts":{"description":"The time that the alert condition was last checked or updated.","type":["string","null"],"format":"date-time"},"resolved_at":{"description":"The time at which the alert condition resolved. Unset if the alert is firing.","type":["string","null"],"format":"date-time"},"spec_type":{"description":"The live spec type","allOf":[{"$ref":"#/components/schemas/CatalogType"}]},"state":{"description":"The current state of the alert.","allOf":[{"$ref":"#/components/schemas/AlertState"}]}},"additionalProperties":true,"required":["state","spec_type","first_ts","last_ts","error","count","resolved_at"]},"ControllerStatus":{"description":"Represents the internal state of a controller.","oneOf":[{"type":"object","properties":{"type":{"type":"string","const":"Capture"}},"allOf":[{"$ref":"#/components/schemas/CaptureStatus"}],"required":["type"]},{"type":"object","properties":{"type":{"type":"string","const":"Collection"}},"allOf":[{"$ref":"#/components/schemas/CollectionStatus"}],"required":["type"]},{"type":"object","properties":{"type":{"type":"string","const":"Materialization"}},"allOf":[{"$ref":"#/components/schemas/MaterializationStatus"}],"required":["type"]},{"type":"object","properties":{"type":{"type":"string","const":"Test"}},"allOf":[{"$ref":"#/components/schemas/TestStatus"}],"required":["type"]},{"type":"object","properties":{"type":{"type":"string","const":"Uninitialized"}},"required":["type"]}]},"DiscoverChange":{"description":"A capture binding that has changed as a result of a discover","type":"object","properties":{"disable":{"description":"Whether the capture binding is disabled.","type":"boolean"},"resource_path":{"description":"Identifies the resource in the source system that this change pertains to.","type":"array","items":{"type":"string"}},"target":{"description":"The target collection of the capture binding that was changed.","allOf":[{"$ref":"#/components/schemas/Collection"}]}},"required":["resource_path","target","disable"]},"Error":{"description":"A generic error that can be associated with a particular draft spec for a given operation.","type":"object","properties":{"catalog_name":{"type":"string"},"detail":{"type":"string"},"scope":{"type":["string","null"]}},"required":["detail"]},"Id":{"type":"string"},"InferredSchemaStatus":{"description":"Status of the inferred schema","type":"object","properties":{"next_md5":{"description":"The md5 of the inferred schema that will next be applied. If this is\npresent, it indicates that the controller is waiting on a cooldown\nperiod before publishing this inferred schema.","type":["string","null"]},"next_update_after":{"description":"The time of the next scheduled inferred schema update. If this is\npresent, it indicates that the controller is waiting on a cooldown\nperiod before publishing the inferred schema, and represents the\napproximate time of the next update.","type":["string"],"format":"date-time","deprecated":true},"schema_last_updated":{"description":"The time at which the inferred schema was last published. This will only\nbe present if the inferred schema was published at least once.","type":["string"],"format":"date-time"},"schema_md5":{"description":"The md5 sum of the inferred schema that was last published.\nBecause the publications handler updates the model instead of the controller, it's\ntechnically possible for the published inferred schema to be more recent than the one\ncorresponding to this hash. If that happens, we would expect a subsequent publication\non the next controller run, which would update the hash but not actually modify the schema.","type":["string","null"]}}},"JobStatus":{"description":"The status of a publication.","type":"object","properties":{"lockFailures":{"type":"array","items":{"$ref":"#/components/schemas/LockFailure"}},"type":{"$ref":"#/components/schemas/StatusType"}},"required":["type"]},"LockFailure":{"description":"Represents an optimistic lock failure when trying to update a specification.\nThis typically means that an expectPubId was not matched, implying that\nanother publication has applied a conflicting update to this specification\nsince it was last fetched.","type":"object","properties":{"actual":{"description":"The actual id that was found.","anyOf":[{"$ref":"#/components/schemas/Id"},{"type":"null"}]},"catalog_name":{"description":"The name of the spec that failed the optimistic concurrency check.","type":"string"},"expected":{"description":"The expected id (either `last_pub_id` or `last_build_id`) that was not\nmatched.","allOf":[{"$ref":"#/components/schemas/Id"}]}},"required":["catalog_name","expected"]},"MaterializationStatus":{"description":"Status of a materialization controller","type":"object","properties":{"abandon":{"anyOf":[{"$ref":"#/components/schemas/AbandonStatus"},{"type":"null"}]},"activation":{"allOf":[{"$ref":"#/components/schemas/ActivationStatus"}],"default":{}},"alerts":{"type":"object","additionalProperties":{"$ref":"#/components/schemas/ControllerAlert"}},"config_updates":{"anyOf":[{"$ref":"#/components/schemas/PendingConfigUpdateStatus"},{"type":"null"}]},"publications":{"allOf":[{"$ref":"#/components/schemas/PublicationStatus"}],"default":{"history":[]}},"source_capture":{"anyOf":[{"$ref":"#/components/schemas/SourceCaptureStatus"},{"type":"null"}]}}},"PendingConfigUpdateStatus":{"description":"Information on the config updates performed by the controller.\nThis does not include any information on user-initiated config updates.","type":"object","properties":{"build":{"description":"The id of the build when the associated config update event was generated.","allOf":[{"$ref":"#/components/schemas/Id"}]},"next_attempt":{"type":["string"],"format":"date-time"}},"required":["next_attempt","build"]},"PublicationInfo":{"description":"Summary of a publication that was attempted by a controller.","type":"object","properties":{"completed":{"description":"Time at which the publication was completed","type":["string"],"format":"date-time"},"count":{"description":"A publication info may represent multiple publications of the same spec.\nIf the publications have similar outcomes, then multiple publications\ncan be condensed into a single entry in the history. If this is done,\nthen the `count` field will be greater than 1. This field is omitted if\nthe count is 1.","type":"integer","minimum":1},"created":{"description":"Time at which the publication was initiated","type":["string"],"format":"date-time"},"detail":{"description":"A brief description of the reason for the publication","type":["string","null"]},"errors":{"description":"Errors will be non-empty for publications that were not successful","type":"array","items":{"$ref":"#/components/schemas/Error"}},"id":{"description":"The id of the publication, which will match the `last_pub_id` of the\nspec after a successful publication, at least until the next publication.","allOf":[{"$ref":"#/components/schemas/Id"}]},"is_touch":{"description":"A touch publication is a publication that does not modify the spec, but\nonly updates the `built_spec` and `last_build_id` fields. They are most\ncommonly performed in response to changes in the spec's dependencies.\nTouch publications will never be combined with non-touch publications in\nthe history.","type":"boolean"},"result":{"description":"The final result of the publication","anyOf":[{"$ref":"#/components/schemas/JobStatus"},{"type":"null"}]}},"required":["id"]},"PublicationStatus":{"description":"Information on the publications performed by the controller.\nThis does not include any information on user-initiated publications.","type":"object","properties":{"history":{"description":"A limited history of publications performed by this controller","type":"array","items":{"$ref":"#/components/schemas/PublicationInfo"}},"max_observed_pub_id":{"description":"The publication id at which the controller has last notified dependent\nspecs. A publication of the controlled spec will cause the controller to\nnotify the controllers of all dependent specs. When it does so, it sets\n`max_observed_pub_id` to the current `last_pub_id`, so that it can avoid\nnotifying dependent controllers unnecessarily.","allOf":[{"$ref":"#/components/schemas/Id"}]},"next_after":{"description":"If we are awaiting a cooldown before publishing this spec, this field will be set\nto the time after which the publication will be retried.","type":["string"],"format":"date-time"},"pending_republish":{"anyOf":[{"$ref":"#/components/schemas/RepublishRequested"},{"type":"null"}]}},"required":["history"]},"RefreshTokenResponse":{"type":"object","properties":{"id":{"$ref":"#/components/schemas/Id"},"secret":{"type":"string"}},"required":["id","secret"]},"RepublishRequested":{"type":"object","properties":{"last_build_id":{"description":"The `last_build_id` of the live spec as of when the `Republish` message\nis received. If the live spec is observed with a `last_build_id` that is\ngreater than this, then the republication will be considered successful\nand complete.","allOf":[{"$ref":"#/components/schemas/Id"}]},"reason":{"description":"The `reason` from the `Republish` message","type":"string"},"received_at":{"description":"Informational only, timestamp of when the controller observed the `Republish` request.","type":["string"],"format":"date-time"}},"required":["received_at","reason","last_build_id"]},"ShardFailure":{"description":"The shape of a connector status, which matches that of an ops::Log.","type":"object","properties":{"fields":{"description":"Arbitrary JSON that can be used to communicate additional details. The\nspecific fields and their meanings are up to the connector, except for\nthe flow `/events` fields: `eventType`, `eventTarget`, and `error`, which\nare restricted to string values.","type":"object","additionalProperties":true},"message":{"description":"The message is meant to be presented to users, and may use Markdown formatting.","type":"string"},"shard":{"description":"The specific shard that failed","allOf":[{"$ref":"#/components/schemas/ShardRef"}]},"ts":{"description":"The time at which the failure occurred","type":["string"],"format":"date-time"}},"required":["shard","ts","message"]},"ShardRef":{"description":"Identifies the specific task shard that is the source of an event. This\nmatches the shape of the `shard` field in an `ops.Log` message.","type":"object","properties":{"build":{"description":"The id of the build that the shard was running when the event was\ngenerated. This can be compared against the `last_build_id` of the live\nspec to determine whether the event happened with the most rececnt\nversion of the published spec (it did if the `last_build_id` is the\nsame).","allOf":[{"$ref":"#/components/schemas/Id"}]},"keyBegin":{"description":"The key range of the task as a hex string. Together with rClockBegin, this\nuniquely identifies a specific task shard.","type":"string"},"name":{"description":"The name of the task","type":"string"},"rClockBegin":{"description":"The rClock range of the task as a hex string. Together with keyBegin, this\nuniquely identifies a specific task shard.","type":"string"}},"required":["name","keyBegin","rClockBegin","build"]},"ShardStatusCheck":{"type":"object","properties":{"count":{"description":"The number of checks that have returned ths status","type":"integer","format":"uint32","minimum":0},"first_ts":{"description":"The time of the first status check that returned this status","type":["string"],"format":"date-time"},"last_ts":{"description":"The time of the most recent status check","type":["string"],"format":"date-time"},"status":{"description":"The observed status","allOf":[{"$ref":"#/components/schemas/ShardsStatus"}]}},"required":["last_ts","first_ts","status"]},"ShardsStatus":{"description":"Represents a high level status aggregate of all the shards for a given task.","oneOf":[{"description":"All task shards have a `Primary` member.","type":"string","const":"Ok"},{"description":"Any task shards are in `Pending` or `Backfill`, and none are `Failed`.\nOr no task shards yet exist.","type":"string","const":"Pending"},{"description":"Any task shard is `Failed`","type":"string","const":"Failed"}]},"SourceCaptureStatus":{"description":"Status information about the `sourceCapture`","type":"object","properties":{"add_bindings":{"description":"If `up_to_date` is `false`, then this will contain the set of\n`sourceCapture` collections that need to be added. This is provided\nsimply to aid in debugging in case the publication to add the bindings\nfails.","type":"array","items":{"$ref":"#/components/schemas/Collection"},"uniqueItems":true},"up_to_date":{"description":"Whether the materialization bindings are up-to-date with respect to\nthe `sourceCapture` bindings. In normal operation, this should always\nbe `true`. Otherwise, there will be a controller `error` and the\npublication status will contain details of why the update failed.","type":"boolean","default":false}}},"StatusQuery":{"description":"Query parameters for the status endpoint","type":"object","properties":{"connected":{"description":"Whether to fetch statuses for connected specs, in addition to those named","type":"boolean","default":false},"name":{"description":"The catalog name of the live spec to get the status of","type":"array","items":{"type":"string"}},"short":{"description":"Whether to return a smaller response that excludes the `connector_status` and `controller_status` fields.","type":"boolean","default":false}},"required":["name"]},"StatusResponse":{"description":"Response type for the status endpoint","type":"object","properties":{"catalog_name":{"description":"The name of the live spec","type":"string"},"connector_status":{"description":"The status of the connector, if present.","anyOf":[{"$ref":"#/components/schemas/ConnectorStatus"},{"type":"null"}]},"controller_error":{"description":"Error from the most recent controller run, or `null` if the run was\nsuccessful.","type":["string","null"]},"controller_failures":{"description":"The number of consecutive failures of the controller. Resets to 0 after\nany successful run.","type":"integer","format":"int32"},"controller_next_run":{"description":"Time at which the controller is next scheduled to run. Or null if there\nis no run scheduled.","type":["string","null"],"format":"date-time"},"controller_status":{"description":"The controller status json.","anyOf":[{"$ref":"#/components/schemas/ControllerStatus"},{"type":"null"}]},"controller_updated_at":{"description":"Time of the last controller run for this spec.","type":["string"],"format":"date-time"},"disabled":{"description":"Whether the shards are disabled. Only pertinent to tasks. Omitted if false.","type":"boolean"},"last_build_id":{"description":"The id of the last successful publication of the spec, regardless of\nwhether the spec was modified. This value can be compared against the\nvalue of `/status/activations/last_activated` in order to determine\nwhether the most recent build has been activated in the data plane.","allOf":[{"$ref":"#/components/schemas/Id"}]},"last_pub_id":{"description":"The id of the last successful publication that modified the spec.","allOf":[{"$ref":"#/components/schemas/Id"}]},"live_spec_id":{"description":"The id of the live spec","allOf":[{"$ref":"#/components/schemas/Id"}]},"live_spec_updated_at":{"description":"Time of the last publication that affected the live spec.","type":["string"],"format":"date-time"},"spec_type":{"description":"The type of the live spec","anyOf":[{"$ref":"#/components/schemas/CatalogType"},{"type":"null"}]},"summary":{"description":"A brief summary of the status","allOf":[{"$ref":"#/components/schemas/Summary"}]}},"required":["catalog_name","live_spec_id","summary","last_pub_id","last_build_id","controller_next_run","live_spec_updated_at","controller_updated_at"]},"StatusSummaryType":{"description":"A machine-readable summary of the status\n\nThis summary is derived from multiple different sources of information about\na catalog item, and it attempts to coalesce all that information into a\nsingle, simple characterization. The term \"status\" can mean different\nthings, but here we're primarily concerned with answering the question: \"do\nwe see any problems that might be affecting the correct operation of the\ntask\".","oneOf":[{"description":"Things seem ...not bad","type":"string","const":"ok"},{"description":"The task is currently disabled. Only pertains to captures, derivations,\nand materializations.","type":"string","const":"taskDisabled"},{"description":"Something isn't fully working, but the condition is expected to clear\nautomatically soon. Nothing to worry about as long as the condition\ndoesn't persist for too long.","type":"string","const":"warning"},{"description":"There's some sort of error with this catalog spec.","type":"string","const":"error"}]},"StatusType":{"description":"The highest-level status of a publication.","oneOf":[{"description":"The publication has not yet been completed.","type":"string","const":"queued"},{"description":"There was a failure to build or validate the drafted specs. This could\nbe due to a mistake in the drafted specs, or due to a failure to\nvalidate the proposed changes with an external system connected to one\nof the connected captures or materializations.","type":"string","const":"buildFailed"},{"description":"Publication failed due to the failure of one or more tests.","type":"string","const":"testFailed"},{"description":"Something went wrong with the publication process. These errors can\ntypically be retried by the client.","type":"string","const":"publishFailed"},{"description":"The publication was successful. All drafted specs are now committed as\nthe live specs. Note that activation of the published specs in the data\nplane happens asynchronously, after the publication is committed.\nTherefore, it may take some time for the published changes to be\nreflected in running tasks.","type":"string","const":"success"},{"description":"Returned when there are no draft specs (after pruning unbound\ncollections). There will not be any `draft_errors` in this case, because\nthere's no `catalog_name` to associate with an error. And it may not be\ndesirable to treat this as an error, depending on the scenario.","type":"string","const":"emptyDraft"},{"description":"One or more expected `last_pub_id`s did not match the actual `last_pub_id`, indicating that specs\nhave been changed since the draft was created.","type":"string","const":"expectPubIdMismatch"},{"description":"Optimistic locking failure for one or more specs in the publication. This case should\ntypically be retried by the publisher.","type":"string","const":"buildIdLockFailure"},{"description":"The publication used the deprecated background flag, which is no longer supported.","type":"string","const":"deprecatedBackground"}]},"Summary":{"type":"object","properties":{"message":{"type":"string"},"status":{"$ref":"#/components/schemas/StatusSummaryType"}},"required":["status","message"]},"TestStatus":{"type":"object","properties":{"alerts":{"type":"object","additionalProperties":{"$ref":"#/components/schemas/ControllerAlert"}},"passing":{"type":"boolean"},"publications":{"allOf":[{"$ref":"#/components/schemas/PublicationStatus"}],"default":{"history":[]}}},"required":["passing"]},"TokenRequest":{"oneOf":[{"type":"object","properties":{"grant_type":{"type":"string","const":"refresh_token"},"refresh_token_id":{"$ref":"#/components/schemas/Id"},"secret":{"type":"string"}},"required":["grant_type","refresh_token_id","secret"]}]},"TokenResponse":{"type":"object","properties":{"access_token":{"type":"string"},"refresh_token":{"anyOf":[{"$ref":"#/components/schemas/RefreshTokenResponse"},{"type":"null"}]}},"required":["access_token"]}}},"security":[{"ApiKey":[]}]}