@company-semantics/contracts 99.2.0 → 99.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@company-semantics/contracts",
3
- "version": "99.2.0",
3
+ "version": "99.3.0",
4
4
  "private": false,
5
5
  "repository": {
6
6
  "type": "git",
@@ -1,3 +1,3 @@
1
1
  // AUTO-GENERATED — do not edit. Run pnpm generate:spec-hash to regenerate.
2
- export const SPEC_HASH = 'bdfe41ff343f' as const;
3
- export const SPEC_HASH_FULL = 'bdfe41ff343f7f914f93bf62144b67f3f1ff2f0cd2c53e6bb0727dff96eb543b' as const;
2
+ export const SPEC_HASH = 'c7651db1db74' as const;
3
+ export const SPEC_HASH_FULL = 'c7651db1db74df7ba1f8d6ef92caef3024498071b187aa818640d98f2d90c037' as const;
@@ -3026,7 +3026,7 @@ export interface paths {
3026
3026
  get?: never;
3027
3027
  /**
3028
3028
  * Upload (replace) a user's avatar photo from an image file
3029
- * @description Accepts a multipart image upload (PNG/JPEG/WebP/HEIC) up to 5 MB. The caller must be the target user or hold org.manage_users. HEIC/HEIF is converted to JPEG and the bytes are re-hosted via the blob store. Returns the resolved avatar.
3029
+ * @description Accepts a multipart image upload (PNG/JPEG/WEBP/GIF/HEIC/HEIF) up to 5 MB. The caller must be the target user or hold org.manage_users. HEIC/HEIF is converted to JPEG (GIF to its first frame as PNG) and the bytes are re-hosted via the blob store. Returns the resolved avatar.
3030
3030
  */
3031
3031
  put: operations["uploadUserAvatar"];
3032
3032
  post?: never;
@@ -3050,7 +3050,7 @@ export interface paths {
3050
3050
  get?: never;
3051
3051
  /**
3052
3052
  * Upload (replace) one of the org's two marks from an image file
3053
- * @description Accepts a multipart image upload (PNG/JPEG/WebP/HEIC) up to 5 MB. Requires org.settings.write. HEIC/HEIF is converted to JPEG and the bytes are re-hosted via the blob store, never hot-linked. The slot to write: `app_logo` (the square mark, also the slot the Slack workspace icon fills) or `logo` (the wordmark, which is upload-only). Returns both slots as signed URLs.
3053
+ * @description Accepts a multipart image upload (PNG/JPEG/WEBP/GIF/HEIC/HEIF) up to 5 MB. Requires org.settings.write. HEIC/HEIF is converted to JPEG (GIF to its first frame as PNG) and the bytes are re-hosted via the blob store, never hot-linked. The slot to write: `app_logo` (the square mark, also the slot the Slack workspace icon fills) or `logo` (the wordmark, which is upload-only). Returns both slots as signed URLs.
3054
3054
  */
3055
3055
  put: operations["uploadOrgLogo"];
3056
3056
  post?: never;
@@ -4116,6 +4116,57 @@ export interface paths {
4116
4116
  patch?: never;
4117
4117
  trace?: never;
4118
4118
  };
4119
+ "/api/schedules/tick": {
4120
+ parameters: {
4121
+ query?: never;
4122
+ header?: never;
4123
+ path?: never;
4124
+ cookie?: never;
4125
+ };
4126
+ get?: never;
4127
+ put?: never;
4128
+ /** Run one schedule clock pass for the edge tick source */
4129
+ post: operations["scheduleTick"];
4130
+ delete?: never;
4131
+ options?: never;
4132
+ head?: never;
4133
+ patch?: never;
4134
+ trace?: never;
4135
+ };
4136
+ "/api/schedules/executions/start": {
4137
+ parameters: {
4138
+ query?: never;
4139
+ header?: never;
4140
+ path?: never;
4141
+ cookie?: never;
4142
+ };
4143
+ get?: never;
4144
+ put?: never;
4145
+ /** Claim a scheduled execution (or admit a legacy run) for the calling workflow's run */
4146
+ post: operations["scheduleExecutionStart"];
4147
+ delete?: never;
4148
+ options?: never;
4149
+ head?: never;
4150
+ patch?: never;
4151
+ trace?: never;
4152
+ };
4153
+ "/api/schedules/executions/finish": {
4154
+ parameters: {
4155
+ query?: never;
4156
+ header?: never;
4157
+ path?: never;
4158
+ cookie?: never;
4159
+ };
4160
+ get?: never;
4161
+ put?: never;
4162
+ /** Report a claimed execution's conclusion, fenced by its claim epoch */
4163
+ post: operations["scheduleExecutionFinish"];
4164
+ delete?: never;
4165
+ options?: never;
4166
+ head?: never;
4167
+ patch?: never;
4168
+ trace?: never;
4169
+ };
4119
4170
  "/api/internal-admin/impersonate/start": {
4120
4171
  parameters: {
4121
4172
  query?: never;
@@ -9966,6 +10017,68 @@ export interface components {
9966
10017
  };
9967
10018
  }[];
9968
10019
  };
10020
+ ScheduleTickResponse: {
10021
+ /** @enum {string} */
10022
+ source: "edge" | "jobqueue";
10023
+ /** Format: date-time */
10024
+ tickedAt: string;
10025
+ reconcileOk: boolean;
10026
+ registryVersion: string | null;
10027
+ dispatched: number;
10028
+ incidentsOpened: number;
10029
+ incidentsResolved: number;
10030
+ };
10031
+ ScheduleTickRequest: {
10032
+ /** @enum {string} */
10033
+ source: "edge" | "jobqueue";
10034
+ /** Format: date-time */
10035
+ scheduledFor: string;
10036
+ cron: string;
10037
+ };
10038
+ ScheduleClaimResponse: {
10039
+ /** @constant */
10040
+ outcome: "claimed";
10041
+ executionId: string;
10042
+ claimEpoch: number;
10043
+ /** Format: date-time */
10044
+ leaseUntil: string;
10045
+ /** @enum {string} */
10046
+ mode: "off" | "shadow" | "live";
10047
+ } | {
10048
+ /** @constant */
10049
+ outcome: "legacy";
10050
+ scheduleId: string;
10051
+ /** @enum {string} */
10052
+ mode: "off" | "shadow" | "live";
10053
+ } | {
10054
+ /** @constant */
10055
+ outcome: "refused";
10056
+ /** @enum {string} */
10057
+ reason: "already_completed" | "lease_held" | "legacy_run_not_admitted" | "not_dispatched" | "binding_mismatch" | "schedule_off";
10058
+ };
10059
+ ScheduleStartRequest: {
10060
+ executionId: string | null;
10061
+ attempt: number | null;
10062
+ };
10063
+ ScheduleFinishResponse: {
10064
+ /** @constant */
10065
+ recorded: true;
10066
+ executionId: string;
10067
+ /** @enum {string} */
10068
+ state: "due" | "dispatch_requested" | "started" | "completed" | "output_verified" | "timed_out" | "superseded" | "missed" | "acknowledged_loss";
10069
+ } | {
10070
+ /** @constant */
10071
+ recorded: false;
10072
+ /** @enum {string} */
10073
+ reason: "stale_epoch" | "binding_mismatch" | "unknown_execution";
10074
+ };
10075
+ ScheduleFinishRequest: {
10076
+ executionId: string;
10077
+ attempt: number;
10078
+ claimEpoch: number;
10079
+ /** @enum {string} */
10080
+ conclusion: "success" | "failure" | "cancelled";
10081
+ };
9969
10082
  ImpersonationSessionResponse: {
9970
10083
  session: {
9971
10084
  impersonationSessionId: string;
@@ -16916,7 +17029,7 @@ export interface operations {
16916
17029
  };
16917
17030
  content?: never;
16918
17031
  };
16919
- /** @description Unsupported image type or bytes are not a valid image */
17032
+ /** @description Unsupported image type (accepted: PNG/JPEG/WEBP/GIF/HEIC/HEIF) or bytes are not a valid image */
16920
17033
  415: {
16921
17034
  headers: {
16922
17035
  [name: string]: unknown;
@@ -17006,7 +17119,7 @@ export interface operations {
17006
17119
  };
17007
17120
  content?: never;
17008
17121
  };
17009
- /** @description Unsupported image type or bytes are not a valid image */
17122
+ /** @description Unsupported image type (accepted: PNG/JPEG/WEBP/GIF/HEIC/HEIF) or bytes are not a valid image */
17010
17123
  415: {
17011
17124
  headers: {
17012
17125
  [name: string]: unknown;
@@ -18885,6 +18998,148 @@ export interface operations {
18885
18998
  };
18886
18999
  };
18887
19000
  };
19001
+ scheduleTick: {
19002
+ parameters: {
19003
+ query?: never;
19004
+ header?: never;
19005
+ path?: never;
19006
+ cookie?: never;
19007
+ };
19008
+ requestBody: {
19009
+ content: {
19010
+ "application/json": components["schemas"]["ScheduleTickRequest"];
19011
+ };
19012
+ };
19013
+ responses: {
19014
+ /** @description The pass ran (reconcileOk false when it could not conclude) */
19015
+ 200: {
19016
+ headers: {
19017
+ [name: string]: unknown;
19018
+ };
19019
+ content: {
19020
+ "application/json": components["schemas"]["ScheduleTickResponse"];
19021
+ };
19022
+ };
19023
+ /** @description Payload invalid, or a source other than edge */
19024
+ 400: {
19025
+ headers: {
19026
+ [name: string]: unknown;
19027
+ };
19028
+ content?: never;
19029
+ };
19030
+ /** @description Missing or invalid edge bearer token */
19031
+ 401: {
19032
+ headers: {
19033
+ [name: string]: unknown;
19034
+ };
19035
+ content?: never;
19036
+ };
19037
+ /** @description The pass did not finish within its deadline */
19038
+ 503: {
19039
+ headers: {
19040
+ [name: string]: unknown;
19041
+ };
19042
+ content?: never;
19043
+ };
19044
+ };
19045
+ };
19046
+ scheduleExecutionStart: {
19047
+ parameters: {
19048
+ query?: never;
19049
+ header?: never;
19050
+ path?: never;
19051
+ cookie?: never;
19052
+ };
19053
+ requestBody: {
19054
+ content: {
19055
+ "application/json": components["schemas"]["ScheduleStartRequest"];
19056
+ };
19057
+ };
19058
+ responses: {
19059
+ /** @description claimed, legacy (runs, counts toward no slot) or refused (skip the work) */
19060
+ 200: {
19061
+ headers: {
19062
+ [name: string]: unknown;
19063
+ };
19064
+ content: {
19065
+ "application/json": components["schemas"]["ScheduleClaimResponse"];
19066
+ };
19067
+ };
19068
+ /** @description Payload invalid */
19069
+ 400: {
19070
+ headers: {
19071
+ [name: string]: unknown;
19072
+ };
19073
+ content?: never;
19074
+ };
19075
+ /** @description Missing or rejected GitHub Actions OIDC token */
19076
+ 401: {
19077
+ headers: {
19078
+ [name: string]: unknown;
19079
+ };
19080
+ content?: never;
19081
+ };
19082
+ /** @description The workflow is not bound to a registered schedule */
19083
+ 403: {
19084
+ headers: {
19085
+ [name: string]: unknown;
19086
+ };
19087
+ content?: never;
19088
+ };
19089
+ /** @description GitHub could not confirm the run; nothing was claimed */
19090
+ 503: {
19091
+ headers: {
19092
+ [name: string]: unknown;
19093
+ };
19094
+ content?: never;
19095
+ };
19096
+ };
19097
+ };
19098
+ scheduleExecutionFinish: {
19099
+ parameters: {
19100
+ query?: never;
19101
+ header?: never;
19102
+ path?: never;
19103
+ cookie?: never;
19104
+ };
19105
+ requestBody: {
19106
+ content: {
19107
+ "application/json": components["schemas"]["ScheduleFinishRequest"];
19108
+ };
19109
+ };
19110
+ responses: {
19111
+ /** @description recorded, or not recorded with the reason (a stale epoch is not an error) */
19112
+ 200: {
19113
+ headers: {
19114
+ [name: string]: unknown;
19115
+ };
19116
+ content: {
19117
+ "application/json": components["schemas"]["ScheduleFinishResponse"];
19118
+ };
19119
+ };
19120
+ /** @description Payload invalid */
19121
+ 400: {
19122
+ headers: {
19123
+ [name: string]: unknown;
19124
+ };
19125
+ content?: never;
19126
+ };
19127
+ /** @description Missing or rejected GitHub Actions OIDC token */
19128
+ 401: {
19129
+ headers: {
19130
+ [name: string]: unknown;
19131
+ };
19132
+ content?: never;
19133
+ };
19134
+ /** @description The workflow is not bound to this schedule */
19135
+ 403: {
19136
+ headers: {
19137
+ [name: string]: unknown;
19138
+ };
19139
+ content?: never;
19140
+ };
19141
+ };
19142
+ };
18888
19143
  startImpersonation: {
18889
19144
  parameters: {
18890
19145
  query?: never;
@@ -218,6 +218,9 @@ export const openApiRoutes = {
218
218
  '/api/reporting/move/apply': ['POST'],
219
219
  '/api/reporting/move/preview': ['POST'],
220
220
  '/api/reporting/positions/{positionId}/manager': ['PUT'],
221
+ '/api/schedules/executions/finish': ['POST'],
222
+ '/api/schedules/executions/start': ['POST'],
223
+ '/api/schedules/tick': ['POST'],
221
224
  '/api/scope/check': ['GET'],
222
225
  '/api/scope/check-batch': ['POST'],
223
226
  '/api/source-sync/candidate-sets/current': ['GET'],