|
667 | 667 | "tags": [ |
668 | 668 | "Tenant > Standards" |
669 | 669 | ], |
670 | | - "description": "Creates or updates a baseline. There is no baseline blob: the Baselines\ndelta rows (design doc §4.1) are the editable source of truth for every standard's\nconfiguration, and the BaselineRollouts row (§12.2) holds the baseline-level data -\nname, description, exclusions, alert destinations, and the ordered stage definitions.\nBaselines are reconstructed from those rows on read.", |
| 670 | + "description": "Creates or updates a baseline. There is no baseline blob: the Baselines\ndelta rows (design doc §4.1) are the editable source of truth for every standard's\nconfiguration, and the BaselineRollouts row (§12.2) holds the baseline-level data -\nname, description, exclusions, alert destinations, and the ordered stage definitions.\nBaselines are reconstructed from those rows on read. The actual write lives in\nNew-CIPPBaseline, shared with the community-repo import.", |
671 | 671 | "requestBody": { |
672 | | - "required": true, |
| 672 | + "required": false, |
673 | 673 | "content": { |
674 | 674 | "application/json": { |
675 | 675 | "schema": { |
|
722 | 722 | "type": "string" |
723 | 723 | } |
724 | 724 | }, |
725 | | - "required": [ |
726 | | - "templateName" |
727 | | - ] |
| 725 | + "additionalProperties": true, |
| 726 | + "x-cipp-passthrough": true, |
| 727 | + "description": "This endpoint forwards the request body onward rather than reading a fixed set of fields. The properties listed here are the ones it is known to read; others may be accepted." |
728 | 728 | } |
729 | 729 | } |
730 | 730 | } |
|
764 | 764 | "bearerAuth": [] |
765 | 765 | } |
766 | 766 | ], |
767 | | - "x-cipp-role": "Tenant.Standards.ReadWrite" |
| 767 | + "x-cipp-role": "Tenant.Standards.ReadWrite", |
| 768 | + "x-cipp-reads-via": [ |
| 769 | + "New-CIPPBaseline" |
| 770 | + ] |
768 | 771 | } |
769 | 772 | }, |
770 | 773 | "/api/AddBPATemplate": { |
|
15079 | 15082 | "bearerAuth": [] |
15080 | 15083 | } |
15081 | 15084 | ], |
15082 | | - "x-cipp-role": "CIPP.AppSettings.ReadWrite" |
| 15085 | + "x-cipp-role": "CIPP.AppSettings.ReadWrite", |
| 15086 | + "x-cipp-any-tenant": true |
15083 | 15087 | } |
15084 | 15088 | }, |
15085 | 15089 | "/api/ExecBreachSearch": { |
|
16301 | 16305 | "SetBranch", |
16302 | 16306 | "SetTemplateTypes", |
16303 | 16307 | "Update", |
| 16308 | + "UploadBaseline", |
16304 | 16309 | "UploadScript", |
16305 | 16310 | "UploadTemplate" |
16306 | 16311 | ] |
|
16315 | 16320 | "type": "string" |
16316 | 16321 | }, |
16317 | 16322 | "GUID": { |
16318 | | - "type": "string" |
| 16323 | + "type": "string", |
| 16324 | + "description": "A baseline is not a templates-table row: Export-CIPPBaselineTemplate assembles the portable set - the BaselineTemplate file plus one standard template file per referenced CA/Intune template (packages expanded to their current members). Related templates are separate files, exactly the shape UploadTemplate writes, so they import through the untouched path." |
16319 | 16325 | }, |
16320 | 16326 | "Id": { |
16321 | 16327 | "type": "string" |
|
18595 | 18601 | } |
18596 | 18602 | } |
18597 | 18603 | }, |
| 18604 | + "400": { |
| 18605 | + "description": "Bad request - missing required field or invalid input" |
| 18606 | + }, |
18598 | 18607 | "401": { |
18599 | 18608 | "description": "Unauthorized - invalid or missing bearer token" |
18600 | 18609 | }, |
|
30165 | 30174 | "x-cipp-role": "CIPP.SuperAdmin.ReadWrite" |
30166 | 30175 | } |
30167 | 30176 | }, |
| 30177 | + "/api/ExecSamSecretStatus": { |
| 30178 | + "post": { |
| 30179 | + "summary": "Reports whether the stored SAM application secret is usable yet.", |
| 30180 | + "operationId": "ExecSamSecretStatus", |
| 30181 | + "tags": [ |
| 30182 | + "CIPP > Setup" |
| 30183 | + ], |
| 30184 | + "description": "The setup wizard creates a client secret on one step and uses it on the next, but Entra\ncan take several minutes to replicate a newly created secret. Until it has, every token\nrequest fails with AADSTS7000215 even though the value CIPP holds is correct. This lets\nthe wizard wait on that instead of failing the user after they have already signed in.", |
| 30185 | + "requestBody": { |
| 30186 | + "required": false, |
| 30187 | + "content": { |
| 30188 | + "application/json": { |
| 30189 | + "schema": { |
| 30190 | + "type": "object", |
| 30191 | + "properties": {} |
| 30192 | + } |
| 30193 | + } |
| 30194 | + } |
| 30195 | + }, |
| 30196 | + "responses": { |
| 30197 | + "200": { |
| 30198 | + "description": "Success", |
| 30199 | + "content": { |
| 30200 | + "application/json": { |
| 30201 | + "schema": { |
| 30202 | + "type": "object", |
| 30203 | + "description": "Not described statically: this endpoint returns the upstream response as-is, so its fields are determined by the upstream API rather than by CIPP. Call the endpoint to see the actual shape, or add a response schema in backend/Config/openapi-overrides." |
| 30204 | + } |
| 30205 | + } |
| 30206 | + } |
| 30207 | + }, |
| 30208 | + "401": { |
| 30209 | + "description": "Unauthorized - invalid or missing bearer token" |
| 30210 | + }, |
| 30211 | + "403": { |
| 30212 | + "description": "Forbidden - caller lacks the required RBAC role" |
| 30213 | + } |
| 30214 | + }, |
| 30215 | + "security": [ |
| 30216 | + { |
| 30217 | + "bearerAuth": [] |
| 30218 | + } |
| 30219 | + ], |
| 30220 | + "x-cipp-role": "CIPP.AppSettings.ReadWrite", |
| 30221 | + "x-cipp-any-tenant": true |
| 30222 | + } |
| 30223 | + }, |
30168 | 30224 | "/api/ExecScheduleForwardingVacation": { |
30169 | 30225 | "post": { |
30170 | 30226 | "summary": "ExecScheduleForwardingVacation", |
|
38369 | 38425 | "tags": [ |
38370 | 38426 | "CIPP > Settings" |
38371 | 38427 | ], |
38372 | | - "description": "Returns the report branding: colours, logo and cover images, footer and watermark text.\n\nThis used to ride along inside ListUserSettings, which meant every page load carried every\nuploaded cover as an inline data URL — megabytes of images fetched to render a settings\nmenu. Worse, hydrating branding also ran the legacy-image migration, so a GET issued on\nevery page load wrote the BrandingSettings row back from a snapshot it had read moments\nearlier, and any upload that landed in between was overwritten.\n\nBranding therefore has its own endpoint, fetched by the things that actually draw it, and\nthis read never writes. Migration belongs to ExecBrandingSettings -Action Get: the settings\npage opening is a deliberate, infrequent, single-user action, which is the one place where\nrewriting the row is safe.\n\nIts role matches ListUserSettings rather than the branding write role — every user who\nrenders a report needs the branding on it, and that is exactly who could read it before.", |
| 38428 | + "description": "Returns the report branding: colours, logo and cover images, footer and watermark text.\n\nBranding was previously returned by ListUserSettings, which put every uploaded cover\ninline on every page load and ran the legacy-image migration - a write - on that read\npath. This read never writes; migration belongs to ExecBrandingSettings -Action Get.\n\nThe role matches ListUserSettings rather than the branding write role, since every user\nwho renders a report needs the branding on it.", |
38373 | 38429 | "parameters": [ |
38374 | 38430 | { |
38375 | 38431 | "name": "includeGallery", |
|
44396 | 44452 | "tags": [ |
44397 | 44453 | "Tools > GitHub" |
44398 | 44454 | ], |
44399 | | - "description": "Returns release metadata for the provided repository and semantic version. Hotfix\nversions (e.g. v8.5.2) map back to the base release tag (v8.5.0).", |
| 44455 | + "description": "Returns release metadata for the provided repository. Results are cached and refreshed\nwhen the cache has no entry for the running version - hotfix releases (e.g. v8.5.2)\npublish their own notes, so a v8.5.0 entry no longer counts as current.", |
44400 | 44456 | "responses": { |
44401 | 44457 | "200": { |
44402 | 44458 | "description": "Success", |
|
0 commit comments