XISUITEDokumentation

Portfolios

25 Endpunkte. Basis-URL: https://xapi.ambertech.cloud/api/v1

List portfolios#

GET/portfoliosToken

Parameter

NameOrtTypBeschreibung
statusQuerystring

Werte: draftactiveon_holdcompleted

searchQuerystring–
include_archivedQueryboolean–
pageQuerynumber–
pageSizeQuerynumber–

Antworten

  • 200Portfolio list with pagination metadata.
  • 403Portfolio module disabled or insufficient permissions.
Beispiel (cURL)
curl -X GET "https://xapi.ambertech.cloud/api/v1/portfolios" \
  -H "Authorization: Bearer $XISUITE_TOKEN"

Create a portfolio#

POST/portfoliosToken

Request-Bodyapplication/jsonCreatePortfolioDto

NameTypBeschreibung
namePflichtstring–
descriptionobject–
statusstring

Werte: draftactiveon_holdcompleted

colorobject–
owner_idobject–

Antworten

  • 201Portfolio created.
  • 400Invalid portfolio payload.
  • 403Portfolio module disabled or insufficient permissions.
Beispiel (cURL)
curl -X POST "https://xapi.ambertech.cloud/api/v1/portfolios" \
  -H "Authorization: Bearer $XISUITE_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"name":"…"}'

Get a portfolio by ID#

GET/portfolios/{portfolioId}Token

Parameter

NameOrtTypBeschreibung
portfolioIdPflichtPfadstring–

Antworten

  • 200Portfolio row.
  • 404Portfolio not found.
Beispiel (cURL)
curl -X GET "https://xapi.ambertech.cloud/api/v1/portfolios/{portfolioId}" \
  -H "Authorization: Bearer $XISUITE_TOKEN"

Update a portfolio#

PATCH/portfolios/{portfolioId}Token

Parameter

NameOrtTypBeschreibung
portfolioIdPflichtPfadstring–

Request-Bodyapplication/jsonUpdatePortfolioDto

NameTypBeschreibung
namestring–
descriptionobject–
statusstring

Werte: draftactiveon_holdcompleted

colorobject–
owner_idobject–
is_archivedboolean–
sort_ordernumber–

Antworten

  • 200Portfolio updated.
  • 400Invalid update payload.
  • 404Portfolio not found.
Beispiel (cURL)
curl -X PATCH "https://xapi.ambertech.cloud/api/v1/portfolios/{portfolioId}" \
  -H "Authorization: Bearer $XISUITE_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"name":"…","description":{},"status":"draft"}'

Archive or hard-delete a portfolio#

DELETE/portfolios/{portfolioId}Token

Parameter

NameOrtTypBeschreibung
portfolioIdPflichtPfadstring–
hardQueryboolean–

Antworten

  • 200Portfolio archived or hard deleted.
Beispiel (cURL)
curl -X DELETE "https://xapi.ambertech.cloud/api/v1/portfolios/{portfolioId}" \
  -H "Authorization: Bearer $XISUITE_TOKEN"

Get portfolio KPI dashboard data#

GET/portfolios/{portfolioId}/dashboardToken

Parameter

NameOrtTypBeschreibung
portfolioIdPflichtPfadstring–

Antworten

  • 200Portfolio KPI summary.
Beispiel (cURL)
curl -X GET "https://xapi.ambertech.cloud/api/v1/portfolios/{portfolioId}/dashboard" \
  -H "Authorization: Bearer $XISUITE_TOKEN"

Get portfolio Gantt tree#

GET/portfolios/{portfolioId}/ganttToken

Returns a hierarchical { portfolio, spaces: [{ space, plans: [...] }] } tree. Each plan row includes owner, budget, CPI/SPI, last-letter status, custom field values, and archive flag.

Parameter

NameOrtTypBeschreibung
portfolioIdPflichtPfadstring–

Antworten

  • 200Portfolio Gantt tree grouped by space, with archived plans included (flagged via is_archived).
Beispiel (cURL)
curl -X GET "https://xapi.ambertech.cloud/api/v1/portfolios/{portfolioId}/gantt" \
  -H "Authorization: Bearer $XISUITE_TOKEN"

List management letters for a portfolio#

GET/portfolios/{portfolioId}/lettersToken

Parameter

NameOrtTypBeschreibung
portfolioIdPflichtPfadstring–
statusQuerystring

Werte: draftsubmittedapprovedrejected

Antworten

  • 200Management letters visible to the current user.
Beispiel (cURL)
curl -X GET "https://xapi.ambertech.cloud/api/v1/portfolios/{portfolioId}/letters" \
  -H "Authorization: Bearer $XISUITE_TOKEN"

Create a portfolio management letter#

POST/portfolios/{portfolioId}/lettersToken

Parameter

NameOrtTypBeschreibung
portfolioIdPflichtPfadstring–

Request-Bodyapplication/jsonCreateLetterDto

NameTypBeschreibung
plan_idPflichtstring–
reporting_period_startPflichtstring

Beispiel: 2026-05-01

reporting_period_endPflichtstring

Beispiel: 2026-05-31

due_dateobject

Beispiel: 2026-06-07

rag_schedulestring

Werte: greenamberred

rag_budgetstring

Werte: greenamberred

rag_qualitystring

Werte: greenamberred

key_messageobject–
assigned_to_user_idobject

Explicit assignee for this letter. Falls back to plan owner when omitted.

Antworten

  • 201Management letter created and linked task created.
  • 400Invalid period, duplicate period, or plan is not in portfolio.
Beispiel (cURL)
curl -X POST "https://xapi.ambertech.cloud/api/v1/portfolios/{portfolioId}/letters" \
  -H "Authorization: Bearer $XISUITE_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"plan_id":"…","reporting_period_start":"2026-05-01","reporting_period_end":"2026-05-31"}'

Get a portfolio management letter#

GET/portfolios/{portfolioId}/letters/{letterId}Token

Parameter

NameOrtTypBeschreibung
portfolioIdPflichtPfadstring–
letterIdPflichtPfadstring–

Antworten

  • 200OK
Beispiel (cURL)
curl -X GET "https://xapi.ambertech.cloud/api/v1/portfolios/{portfolioId}/letters/{letterId}" \
  -H "Authorization: Bearer $XISUITE_TOKEN"

Update a portfolio management letter#

PATCH/portfolios/{portfolioId}/letters/{letterId}Token

Parameter

NameOrtTypBeschreibung
portfolioIdPflichtPfadstring–
letterIdPflichtPfadstring–

Request-Bodyapplication/jsonUpdateLetterDto

NameTypBeschreibung
rag_schedulestring

Werte: greenamberred

rag_budgetstring

Werte: greenamberred

rag_qualitystring

Werte: greenamberred

key_messageobject–
milestones_achievedstring[]–
success_factorsobject–
planned_vs_actualobject–
next_stepsstring[]–
budget_consumption_percentobject–
resource_availabilityobject–
identified_risksstring[]–
blockersstring[]–
due_dateobject–
assigned_to_user_idobject

Reassign this letter to another user. Managers only; must always resolve to a non-null user.

Antworten

  • 200Management letter updated.
Beispiel (cURL)
curl -X PATCH "https://xapi.ambertech.cloud/api/v1/portfolios/{portfolioId}/letters/{letterId}" \
  -H "Authorization: Bearer $XISUITE_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"rag_schedule":"green","rag_budget":"green","rag_quality":"green"}'

Delete a portfolio management letter#

DELETE/portfolios/{portfolioId}/letters/{letterId}Token

Parameter

NameOrtTypBeschreibung
portfolioIdPflichtPfadstring–
letterIdPflichtPfadstring–

Antworten

  • 200OK
Beispiel (cURL)
curl -X DELETE "https://xapi.ambertech.cloud/api/v1/portfolios/{portfolioId}/letters/{letterId}" \
  -H "Authorization: Bearer $XISUITE_TOKEN"

Approve a portfolio management letter#

POST/portfolios/{portfolioId}/letters/{letterId}/approveToken

Parameter

NameOrtTypBeschreibung
portfolioIdPflichtPfadstring–
letterIdPflichtPfadstring–

Antworten

  • 201Letter approved.
Beispiel (cURL)
curl -X POST "https://xapi.ambertech.cloud/api/v1/portfolios/{portfolioId}/letters/{letterId}/approve" \
  -H "Authorization: Bearer $XISUITE_TOKEN"

Recompute a letter's budget_consumption_percent from tasks active during the reporting period#

POST/portfolios/{portfolioId}/letters/{letterId}/recompute-budget-consumptionToken

Parameter

NameOrtTypBeschreibung
portfolioIdPflichtPfadstring–
letterIdPflichtPfadstring–

Antworten

  • 201Letter budget consumption percent refreshed from the linked plan tasks.
Beispiel (cURL)
curl -X POST "https://xapi.ambertech.cloud/api/v1/portfolios/{portfolioId}/letters/{letterId}/recompute-budget-consumption" \
  -H "Authorization: Bearer $XISUITE_TOKEN"

Recompute a letter's achieved milestones from plan milestones completed in the reporting period#

POST/portfolios/{portfolioId}/letters/{letterId}/recompute-milestonesToken

Parameter

NameOrtTypBeschreibung
portfolioIdPflichtPfadstring–
letterIdPflichtPfadstring–

Antworten

  • 201Letter milestones recomputed from the plan.
Beispiel (cURL)
curl -X POST "https://xapi.ambertech.cloud/api/v1/portfolios/{portfolioId}/letters/{letterId}/recompute-milestones" \
  -H "Authorization: Bearer $XISUITE_TOKEN"

Recompute a letter's RAG fields from the plan baseline EVM#

POST/portfolios/{portfolioId}/letters/{letterId}/recompute-ragToken

Parameter

NameOrtTypBeschreibung
portfolioIdPflichtPfadstring–
letterIdPflichtPfadstring–

Antworten

  • 201Letter RAG recomputed from baseline EVM.
  • 400No active baseline for this plan.
Beispiel (cURL)
curl -X POST "https://xapi.ambertech.cloud/api/v1/portfolios/{portfolioId}/letters/{letterId}/recompute-rag" \
  -H "Authorization: Bearer $XISUITE_TOKEN"

Recompute a letter's risks_snapshot from the linked plan's plan_risks (draft letters only)#

POST/portfolios/{portfolioId}/letters/{letterId}/recompute-risksToken

Parameter

NameOrtTypBeschreibung
portfolioIdPflichtPfadstring–
letterIdPflichtPfadstring–

Antworten

  • 201Letter risks snapshot refreshed from the plan.
Beispiel (cURL)
curl -X POST "https://xapi.ambertech.cloud/api/v1/portfolios/{portfolioId}/letters/{letterId}/recompute-risks" \
  -H "Authorization: Bearer $XISUITE_TOKEN"

Reject a portfolio management letter#

POST/portfolios/{portfolioId}/letters/{letterId}/rejectToken

Parameter

NameOrtTypBeschreibung
portfolioIdPflichtPfadstring–
letterIdPflichtPfadstring–

Request-Bodyapplication/jsonRejectLetterDto

NameTypBeschreibung
reasonPflichtstring–

Antworten

  • 201Letter rejected back to draft.
Beispiel (cURL)
curl -X POST "https://xapi.ambertech.cloud/api/v1/portfolios/{portfolioId}/letters/{letterId}/reject" \
  -H "Authorization: Bearer $XISUITE_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"reason":"…"}'

Submit a portfolio management letter#

POST/portfolios/{portfolioId}/letters/{letterId}/submitToken

Parameter

NameOrtTypBeschreibung
portfolioIdPflichtPfadstring–
letterIdPflichtPfadstring–

Antworten

  • 201Letter submitted for review.
Beispiel (cURL)
curl -X POST "https://xapi.ambertech.cloud/api/v1/portfolios/{portfolioId}/letters/{letterId}/submit" \
  -H "Authorization: Bearer $XISUITE_TOKEN"

List plans included in a portfolio#

GET/portfolios/{portfolioId}/plansToken

Parameter

NameOrtTypBeschreibung
portfolioIdPflichtPfadstring–

Antworten

  • 200Plans visible to the current user.
Beispiel (cURL)
curl -X GET "https://xapi.ambertech.cloud/api/v1/portfolios/{portfolioId}/plans" \
  -H "Authorization: Bearer $XISUITE_TOKEN"

Add a plan to a portfolio#

POST/portfolios/{portfolioId}/plansToken

Parameter

NameOrtTypBeschreibung
portfolioIdPflichtPfadstring–

Request-Bodyapplication/jsonAddPortfolioPlanDto

NameTypBeschreibung
plan_idPflichtstring–

Antworten

  • 201Plan added to portfolio.
  • 409Plan already exists in portfolio.
Beispiel (cURL)
curl -X POST "https://xapi.ambertech.cloud/api/v1/portfolios/{portfolioId}/plans" \
  -H "Authorization: Bearer $XISUITE_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"plan_id":"…"}'

Remove a plan from a portfolio#

DELETE/portfolios/{portfolioId}/plans/{planId}Token

Parameter

NameOrtTypBeschreibung
portfolioIdPflichtPfadstring–
planIdPflichtPfadstring–

Antworten

  • 200Plan removed from portfolio.
Beispiel (cURL)
curl -X DELETE "https://xapi.ambertech.cloud/api/v1/portfolios/{portfolioId}/plans/{planId}" \
  -H "Authorization: Bearer $XISUITE_TOKEN"

Get portfolio management-letter schedule config#

GET/portfolios/{portfolioId}/scheduleToken

Parameter

NameOrtTypBeschreibung
portfolioIdPflichtPfadstring–

Antworten

  • 200Portfolio letter schedule.
  • 404Schedule feature flag is disabled.
Beispiel (cURL)
curl -X GET "https://xapi.ambertech.cloud/api/v1/portfolios/{portfolioId}/schedule" \
  -H "Authorization: Bearer $XISUITE_TOKEN"

Set portfolio management-letter schedule config#

PATCH/portfolios/{portfolioId}/scheduleToken

Parameter

NameOrtTypBeschreibung
portfolioIdPflichtPfadstring–

Request-Bodyapplication/jsonUpdateLetterScheduleDto

NameTypBeschreibung
enabledPflichtboolean–
cadencePflichtstring

Werte: weeklybiweeklymonthlyquarterly

day_of_periodPflichtnumber–
reporting_period_anchorPflichtstring

Werte: period_startperiod_end

Antworten

  • 200Schedule updated.
Beispiel (cURL)
curl -X PATCH "https://xapi.ambertech.cloud/api/v1/portfolios/{portfolioId}/schedule" \
  -H "Authorization: Bearer $XISUITE_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"enabled":true,"cadence":"weekly","day_of_period":0,"reporting_period_anchor":"period_start"}'

Get a portfolio by friendly key#

GET/portfolios/by-key/{key}Token

Parameter

NameOrtTypBeschreibung
keyPflichtPfadstring–

Antworten

  • 200Portfolio row.
  • 404Portfolio not found.
Beispiel (cURL)
curl -X GET "https://xapi.ambertech.cloud/api/v1/portfolios/by-key/{key}" \
  -H "Authorization: Bearer $XISUITE_TOKEN"
Stand: 25. Oktober 2026© 2026 XISUITE · AmberTech Solutions