@package-broker/dist-cloudflare 2.0.0-rc.2 → 2.0.0-rc.3

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.
Files changed (33) hide show
  1. package/cloudflare/assets/access.6859f43998ca.js +1 -0
  2. package/cloudflare/assets/app.e8434f3343de.js +9 -0
  3. package/cloudflare/assets/app.f15f8f21f88b.css +2 -0
  4. package/cloudflare/assets/audit.576009342714.js +1 -0
  5. package/cloudflare/assets/chunk.297a2d571f9c.js +4 -0
  6. package/cloudflare/assets/chunk.3704953b4a66.js +1 -0
  7. package/cloudflare/assets/chunk.6e23a75a1324.js +1 -0
  8. package/cloudflare/assets/chunk.7cb6f6b4daaa.js +1 -0
  9. package/cloudflare/assets/chunk.855a50f45830.js +1 -0
  10. package/cloudflare/assets/chunk.862544cf5835.js +2 -0
  11. package/cloudflare/assets/chunk.976a2ff4338e.js +1 -0
  12. package/cloudflare/assets/chunk.bb25fc845269.js +1 -0
  13. package/cloudflare/assets/chunk.bf48b04e6a00.js +1 -0
  14. package/cloudflare/assets/chunk.ce96495b8b55.js +1 -0
  15. package/cloudflare/assets/chunk.f922af39a279.js +1 -0
  16. package/cloudflare/assets/import.e2a1e35fcb8d.js +1 -0
  17. package/cloudflare/assets/index.html +6 -2
  18. package/cloudflare/assets/manifest.json +80 -8
  19. package/cloudflare/assets/packages.a8726e5144de.js +1 -0
  20. package/cloudflare/assets/projects.711deb86b7c9.js +1 -0
  21. package/cloudflare/assets/setup.dfed30ecfbad.js +1 -0
  22. package/cloudflare/assets/setup.html +3 -3
  23. package/cloudflare/assets/sources.d0ba0048bd96.js +1 -0
  24. package/cloudflare/assets/tokens.f48d235e8d25.js +4 -0
  25. package/cloudflare/assets.json +2 -2
  26. package/cloudflare/build-info.json +4 -4
  27. package/cloudflare/generated/manifest.json +2 -2
  28. package/cloudflare/worker.js +137 -88
  29. package/package.json +1 -1
  30. package/prebuilt.json +33 -15
  31. package/cloudflare/assets/app.b2abf3c46f6e.js +0 -15
  32. package/cloudflare/assets/app.e8cea8b32d3a.css +0 -2
  33. package/cloudflare/assets/setup.98343039898f.js +0 -1
@@ -6436,12 +6436,12 @@ function identityGroups(json3, subject4, email2) {
6436
6436
  }
6437
6437
  const groups = [];
6438
6438
  for (const entry of json3.groups) {
6439
- let group = entry;
6439
+ let group2 = entry;
6440
6440
  if (isRecord4(entry)) {
6441
- group = typeof entry.id === "string" && entry.id !== "" ? entry.id : entry.name;
6441
+ group2 = typeof entry.id === "string" && entry.id !== "" ? entry.id : entry.name;
6442
6442
  }
6443
- if (typeof group === "string" && group !== "") {
6444
- groups.push(group);
6443
+ if (typeof group2 === "string" && group2 !== "") {
6444
+ groups.push(group2);
6445
6445
  }
6446
6446
  }
6447
6447
  return groups;
@@ -29969,8 +29969,8 @@ function urlFieldForm(trimmed) {
29969
29969
  if (SCRIPT_SCHEME.test(trimmed))
29970
29970
  return { ok: false, reason: "bad_value" };
29971
29971
  if (URL_START.test(trimmed)) {
29972
- const redacted2 = redactUrl(trimmed);
29973
- return redacted2 === null ? { ok: false, reason: "bad_value" } : { ok: true, value: redacted2 };
29972
+ const redacted3 = redactUrl(trimmed);
29973
+ return redacted3 === null ? { ok: false, reason: "bad_value" } : { ok: true, value: redacted3 };
29974
29974
  }
29975
29975
  const scp = SCP_ADDRESS.exec(trimmed);
29976
29976
  if (scp === null)
@@ -29990,8 +29990,8 @@ function storedForm(value, kind) {
29990
29990
  return urlFieldForm(trimmed);
29991
29991
  if (!URL_START.test(trimmed))
29992
29992
  return { ok: true, value };
29993
- const redacted2 = redactUrl(trimmed);
29994
- return redacted2 === null ? { ok: false, reason: "bad_value" } : { ok: true, value: redacted2 };
29993
+ const redacted3 = redactUrl(trimmed);
29994
+ return redacted3 === null ? { ok: false, reason: "bad_value" } : { ok: true, value: redacted3 };
29995
29995
  }
29996
29996
  function redactValue(value, limit4, field2) {
29997
29997
  if (value.length > limit4)
@@ -31678,8 +31678,18 @@ function createSourcePackageStore(executor, providerAnchors) {
31678
31678
  }
31679
31679
 
31680
31680
  // packages/db-sqlite/dist/repositories/project-grant-read.js
31681
- function displayName2(value, fallback, includeEmail) {
31682
- return value === null || value.trim() === "" || !includeEmail && value.includes("@") ? fallback : value;
31681
+ function displayName2(value, fallback, reveal) {
31682
+ return value === null || value.trim() === "" || !reveal && value.includes("@") ? fallback : value;
31683
+ }
31684
+ function subjectFields(row, reveal) {
31685
+ if (row.subject_type === "group") {
31686
+ return reveal ? {
31687
+ provider: row.subject_provider,
31688
+ groupValue: row.subject_value,
31689
+ visibility: "visible"
31690
+ } : { provider: row.subject_provider, visibility: "redacted" };
31691
+ }
31692
+ return reveal ? { email: row.subject_value, visibility: "visible" } : { visibility: "redacted" };
31683
31693
  }
31684
31694
  function createProjectGrantReader(executor) {
31685
31695
  return {
@@ -31705,18 +31715,18 @@ function createProjectGrantReader(executor) {
31705
31715
  if (input.after !== void 0)
31706
31716
  query = query.where("g.id", ">", input.after);
31707
31717
  const rows = await executor.all(compile(query));
31708
- const includeEmail = input.includeEmail === true;
31718
+ const reveal = input.revealSubjects === true;
31709
31719
  const items = rows.slice(0, input.limit).map((row) => {
31710
- const group = row.subject_type === "group";
31720
+ const group2 = row.subject_type === "group";
31711
31721
  return {
31712
31722
  id: row.id,
31713
31723
  revision: row.revision,
31714
31724
  createdAt: row.created_at,
31715
31725
  principal: {
31716
- kind: group ? "group" : row.user_id === null ? "email" : "user",
31726
+ kind: group2 ? "group" : row.user_id === null ? "email" : "user",
31717
31727
  id: row.user_id ?? row.id,
31718
- displayName: displayName2(group ? row.subject_value : row.display_name, group ? "Group" : row.user_id === null ? "Pending user" : "User", includeEmail),
31719
- ...group ? { provider: row.subject_provider } : includeEmail ? { email: row.subject_value } : {}
31728
+ displayName: displayName2(group2 ? reveal ? row.subject_value : null : row.display_name, group2 ? "Group" : row.user_id === null ? "Pending user" : "User", reveal),
31729
+ ...subjectFields(row, reveal)
31720
31730
  },
31721
31731
  role: {
31722
31732
  id: row.role_id,
@@ -38626,6 +38636,16 @@ function hasOrganizationAdminAuthority(ctx) {
38626
38636
  const token2 = access.token;
38627
38637
  return access.principal?.kind === "user" && token2?.kind === "pat" && token2.scope === "full" && !token2.readOnly && token2.projectMode === "all" && token2.organizationAdmin === true;
38628
38638
  }
38639
+ function revealsOrganizationGrantSubjects(ctx) {
38640
+ if (authenticatedActorOf(ctx) === null)
38641
+ return false;
38642
+ return organizationActorOf(ctx)?.permissions.has("org:grants:read") === true;
38643
+ }
38644
+ function revealsProjectGrantSubjects(ctx) {
38645
+ if (authenticatedActorOf(ctx) === null)
38646
+ return false;
38647
+ return projectActorOf(ctx)?.permissions.has("project:grants:read") === true;
38648
+ }
38629
38649
  function auditCall(ctx, deps) {
38630
38650
  const access = accessContextOf(ctx);
38631
38651
  if (access === null)
@@ -39680,14 +39700,24 @@ var subject = union([
39680
39700
  value: string2().min(1).max(512)
39681
39701
  })
39682
39702
  ]);
39703
+ var visible = literal("visible");
39704
+ var redacted = literal("redacted");
39683
39705
  var listedSubject = union([
39684
- strictObject({ type: literal("email"), value: string2().optional() }),
39706
+ strictObject({ type: literal("email"), value: string2(), visibility: visible }),
39707
+ strictObject({ type: literal("email"), visibility: redacted }),
39685
39708
  strictObject({
39686
39709
  type: literal("group"),
39687
39710
  provider: string2(),
39688
- value: string2().optional()
39689
- })
39711
+ value: string2(),
39712
+ visibility: visible
39713
+ }),
39714
+ strictObject({ type: literal("group"), provider: string2(), visibility: redacted })
39690
39715
  ]);
39716
+ var roleSummary = strictObject({
39717
+ id: string2(),
39718
+ name: string2(),
39719
+ permissions: array(string2())
39720
+ });
39691
39721
  var roleParams = strictObject({ role: ulid3 });
39692
39722
  var grantParams = strictObject({ grant: ulid3 });
39693
39723
  var created2 = strictObject({ id: ulid3 });
@@ -39705,6 +39735,7 @@ var grantItem = strictObject({
39705
39735
  id: string2(),
39706
39736
  subject: listedSubject,
39707
39737
  roleId: string2(),
39738
+ role: roleSummary.nullable(),
39708
39739
  createdAt: string2(),
39709
39740
  revision: number2().int()
39710
39741
  });
@@ -39855,10 +39886,19 @@ function paged(all, query) {
39855
39886
  const items = ordered2.slice(0, limit4);
39856
39887
  return { items, next: ordered2.length > limit4 ? items[limit4 - 1].id : null };
39857
39888
  }
39858
- function listedSubject2(subject4, includeEmail) {
39859
- if (subject4.type === "email")
39860
- return includeEmail ? subject4 : { type: "email" };
39861
- return subject4.value.includes("@") ? { type: "group", provider: subject4.provider } : subject4;
39889
+ function listedSubject2(subject4, reveal) {
39890
+ if (subject4.type === "email") {
39891
+ return reveal ? { type: "email", value: subject4.value, visibility: "visible" } : { type: "email", visibility: "redacted" };
39892
+ }
39893
+ return reveal ? {
39894
+ type: "group",
39895
+ provider: subject4.provider,
39896
+ value: subject4.value,
39897
+ visibility: "visible"
39898
+ } : { type: "group", provider: subject4.provider, visibility: "redacted" };
39899
+ }
39900
+ function roleSummary2(role2) {
39901
+ return role2 === void 0 ? null : { id: role2.id, name: role2.name, permissions: [...role2.permissions] };
39862
39902
  }
39863
39903
  function outcomeOf(result) {
39864
39904
  return result.ok ? { status: 204 } : { serviceError: result.error };
@@ -39891,14 +39931,16 @@ function accessRoutes(deps) {
39891
39931
  return { error: "unavailable" };
39892
39932
  const grants2 = await deps.grants.listOrganization(ctx.org);
39893
39933
  const { items, next: next2 } = paged(grants2, query);
39894
- const includeEmail = hasOrganizationAdminAuthority(ctx);
39934
+ const reveal = revealsOrganizationGrantSubjects(ctx);
39935
+ const roles = new Map((await administration.listRoles(ctx.org)).filter((role2) => role2.scope === "organization").map((role2) => [role2.id, role2]));
39895
39936
  return {
39896
39937
  status: 200,
39897
39938
  body: {
39898
39939
  items: items.map(({ id: id4, subject: subject4, roleId, createdAt, revision }) => ({
39899
39940
  id: id4,
39900
- subject: listedSubject2(subject4, includeEmail),
39941
+ subject: listedSubject2(subject4, reveal),
39901
39942
  roleId,
39943
+ role: roleSummary2(roles.get(roleId)),
39902
39944
  createdAt,
39903
39945
  revision
39904
39946
  })),
@@ -43506,6 +43548,19 @@ var PROJECT_ACCESS_API_SPECS = [
43506
43548
  }
43507
43549
  }
43508
43550
  ];
43551
+ var person = { kind: _enum(["user", "email"]), id: string2(), displayName: string2() };
43552
+ var group = {
43553
+ kind: literal("group"),
43554
+ id: string2(),
43555
+ displayName: string2(),
43556
+ provider: string2()
43557
+ };
43558
+ var listedPrincipal = union([
43559
+ strictObject({ ...person, email: string2(), visibility: literal("visible") }),
43560
+ strictObject({ ...person, visibility: literal("redacted") }),
43561
+ strictObject({ ...group, groupValue: string2(), visibility: literal("visible") }),
43562
+ strictObject({ ...group, visibility: literal("redacted") })
43563
+ ]);
43509
43564
  var PROJECT_GRANTS_LIST_API_SPEC = {
43510
43565
  method: "GET",
43511
43566
  path: "/_pb/projects/:project/grants",
@@ -43526,13 +43581,7 @@ var PROJECT_GRANTS_LIST_API_SPEC = {
43526
43581
  id: ulid6,
43527
43582
  revision: number2().int().positive(),
43528
43583
  createdAt: string2(),
43529
- principal: strictObject({
43530
- kind: _enum(["user", "email", "group"]),
43531
- id: string2(),
43532
- displayName: string2(),
43533
- provider: string2().optional(),
43534
- email: string2().optional()
43535
- }),
43584
+ principal: listedPrincipal,
43536
43585
  role: strictObject({ id: ulid6, name: string2(), permissions: array(string2()) })
43537
43586
  })),
43538
43587
  next: ulid6.nullable()
@@ -43561,7 +43610,7 @@ function projectAccessRoutes(deps) {
43561
43610
  projectId: ctx.projectId,
43562
43611
  limit: query.limit === void 0 ? 50 : Number(query.limit),
43563
43612
  ...query.after === void 0 ? {} : { after: query.after },
43564
- includeEmail: accessContextOf(ctx)?.actor?.protectedHolder === true
43613
+ revealSubjects: revealsProjectGrantSubjects(ctx)
43565
43614
  });
43566
43615
  const digest4 = await sha256Hex(JSON.stringify([ctx.org.orgId, ctx.projectId, body]));
43567
43616
  return { status: 200, body, etag: Number.parseInt(digest4.slice(0, 12), 16) + 1 };
@@ -44876,12 +44925,12 @@ function sourceNameRoutes(deps) {
44876
44925
  }
44877
44926
  };
44878
44927
  if (actor.kind === "project") {
44879
- const visible = await deps.service.getVisible(c.org, actor, {
44928
+ const visible2 = await deps.service.getVisible(c.org, actor, {
44880
44929
  projectId: actor.actor.projectId,
44881
44930
  sourceId
44882
44931
  });
44883
- if (!visible.ok)
44884
- return visible;
44932
+ if (!visible2.ok)
44933
+ return visible2;
44885
44934
  }
44886
44935
  return { ok: true, value: actor };
44887
44936
  };
@@ -47169,12 +47218,12 @@ function safeSourceUrl(value) {
47169
47218
  try {
47170
47219
  const parsed = new URL(value);
47171
47220
  if (parsed.protocol === "https:" || parsed.protocol === "http:") {
47172
- const redacted2 = redactValue(value, 2048, "url");
47173
- if (redacted2.ok) {
47174
- const decoded = decodeURIComponent(redacted2.value);
47221
+ const redacted3 = redactValue(value, 2048, "url");
47222
+ if (redacted3.ok) {
47223
+ const decoded = decodeURIComponent(redacted3.value);
47175
47224
  const checked = redactValue(decoded, 2048, "url");
47176
47225
  if (checked.ok && checked.value === new URL(decoded).href)
47177
- url = redacted2.value;
47226
+ url = redacted3.value;
47178
47227
  }
47179
47228
  }
47180
47229
  } catch {
@@ -48515,7 +48564,7 @@ function createRegisteredNameRepository(executor) {
48515
48564
  where owner.id = ${input.sourceId} and owner.org_id = ${ctx.orgId}
48516
48565
  and owner.ecosystem = ${source2.ecosystem}
48517
48566
  and owner.type not in (${sql.join(PROXY_TYPES4)}))`;
48518
- const visible = sourceVisible(ctx, input.sourceId);
48567
+ const visible2 = sourceVisible(ctx, input.sourceId);
48519
48568
  const insert = compile(db.insertInto("registered_name").values({
48520
48569
  id: input.id,
48521
48570
  org_id: ctx.orgId,
@@ -48524,7 +48573,7 @@ function createRegisteredNameRepository(executor) {
48524
48573
  pattern: input.pattern
48525
48574
  }));
48526
48575
  const outcome3 = await runOrgFenced(executor, ctx, fence2, assertGuard(allOf([held, sourceUnchanged]), ctx), [
48527
- ...assertCheck(visible),
48576
+ ...assertCheck(visible2),
48528
48577
  insert,
48529
48578
  auditPendingStatement(ctx, input.audit),
48530
48579
  ...input.idempotency === void 0 ? [] : [idempotencyInsertStatement(ctx, input.idempotency)]
@@ -48537,7 +48586,7 @@ function createRegisteredNameRepository(executor) {
48537
48586
  return "added";
48538
48587
  if (outcome3.reason === "indeterminate")
48539
48588
  return "indeterminate";
48540
- if (!await holds2(visible))
48589
+ if (!await holds2(visible2))
48541
48590
  return "not_found";
48542
48591
  if (outcome3.reason === "authority")
48543
48592
  return "forbidden";
@@ -48563,10 +48612,10 @@ function createRegisteredNameRepository(executor) {
48563
48612
  const owned = sql`exists (select 1 from registered_name as target
48564
48613
  where target.id = ${input.id} and target.org_id = ${ctx.orgId}
48565
48614
  and target.source_id = ${sourceId})`;
48566
- const visible = sourceVisible(ctx, sourceId);
48615
+ const visible2 = sourceVisible(ctx, sourceId);
48567
48616
  const pause3 = compile(db.updateTable("source").set({ status: "paused", updated_at: sql`strftime('%Y-%m-%dT%H:%M:%fZ','now')` }).where("id", "=", sourceId).where("org_id", "=", ctx.orgId).where("status", "<>", "paused").where(sql`not ${sourceActivatable(ctx, sourceId)}`));
48568
48617
  const outcome3 = await runOrgFenced(executor, ctx, fence2, assertGuard(allOf([held, owned]), ctx), [
48569
- ...assertCheck(visible),
48618
+ ...assertCheck(visible2),
48570
48619
  compile(db.deleteFrom("registered_name").where("id", "=", input.id).where("org_id", "=", ctx.orgId)),
48571
48620
  pause3,
48572
48621
  auditPendingStatement(ctx, input.pauseAudit, { sql: "changes() = 1", params: [] }),
@@ -48581,7 +48630,7 @@ function createRegisteredNameRepository(executor) {
48581
48630
  }
48582
48631
  if (outcome3.reason === "indeterminate")
48583
48632
  return "indeterminate";
48584
- if (!await holds2(visible))
48633
+ if (!await holds2(visible2))
48585
48634
  return "not_found";
48586
48635
  if (outcome3.reason === "authority")
48587
48636
  return "forbidden";
@@ -49462,13 +49511,13 @@ function createImportCredentialRepository(executor, options) {
49462
49511
  },
49463
49512
  async setCredential(ctx, fence2, input) {
49464
49513
  const allowed = importWriteAuthority(ctx, fence2, anchors);
49465
- const visible = sql`exists ${target(ctx, input.runId)}`;
49514
+ const visible2 = sql`exists ${target(ctx, input.runId)}`;
49466
49515
  const expected = sql`exists ${target(ctx, input.runId).where("icr.approved_at", "=", input.expected.approvedAt).where("icr.credential_window_until", "=", input.expected.credentialWindowUntil)}`;
49467
49516
  const window = sql`exists ${target(ctx, input.runId).where(sql`unixepoch(icr.credential_window_until, 'subsec') > ${CLOCK2}`)}`;
49468
49517
  const bound3 = sql`exists ${source2(ctx, input.runId, input.externalRef).select("ics.id").where("ics.id", "=", input.sourceId)}`;
49469
49518
  const unset = sql`exists ${db.selectFrom("source as ics").select("ics.id").where("ics.org_id", "=", ctx.orgId).where("ics.id", "=", input.sourceId).where("ics.credential_id", "is", null)}`;
49470
49519
  const outcome3 = await runOrgFenced(executor, ctx, fence2, assertGuard(allowed, ctx), [
49471
- ...assertCheck(visible),
49520
+ ...assertCheck(visible2),
49472
49521
  ...assertCheck(expected),
49473
49522
  ...assertCheck(window),
49474
49523
  ...assertCheck(bound3),
@@ -49488,7 +49537,7 @@ function createImportCredentialRepository(executor, options) {
49488
49537
  if (outcome3.ok || outcome3.reason === "indeterminate")
49489
49538
  return outcome3;
49490
49539
  const [current] = await executor.all(compile(db.selectNoFrom([
49491
- sql`case when ${visible} then 1 else 0 end`.as("present"),
49540
+ sql`case when ${visible2} then 1 else 0 end`.as("present"),
49492
49541
  sql`case when ${bound3} then 1 else 0 end`.as("bound")
49493
49542
  ])));
49494
49543
  if (current?.present !== 1 || current.bound !== 1)
@@ -49573,10 +49622,10 @@ function createImportRunStore(options) {
49573
49622
  if (operation !== "requestVerify")
49574
49623
  session2(fence2);
49575
49624
  const allowed = authority3(ctx, fence2, operation);
49576
- const visible = sql`exists ${target(ctx, input.runId)}`;
49625
+ const visible2 = sql`exists ${target(ctx, input.runId)}`;
49577
49626
  const reauth = operation === "requestVerify" ? sql`1` : fresh(ctx, fence2);
49578
49627
  const inspect2 = async () => executor.all(compile(db.selectNoFrom([
49579
- sql`case when ${visible} then 1 else 0 end`.as("present"),
49628
+ sql`case when ${visible2} then 1 else 0 end`.as("present"),
49580
49629
  sql`case when ${allowed} then 1 else 0 end`.as("allowed"),
49581
49630
  sql`case when ${reauth} then 1 else 0 end`.as("fresh")
49582
49631
  ])));
@@ -49622,7 +49671,7 @@ function createImportRunStore(options) {
49622
49671
  and (${e.beforeImageExpiresAt} is null or unixepoch(${e.beforeImageExpiresAt}, 'subsec') > ${CLOCK3})`;
49623
49672
  break;
49624
49673
  }
49625
- mutations.push(...assertCheck(visible), ...assertCheck(reauth), ...assertCheck(expected(ctx, input)), ...assertCheck(sql`(${valid2})`));
49674
+ mutations.push(...assertCheck(visible2), ...assertCheck(reauth), ...assertCheck(expected(ctx, input)), ...assertCheck(sql`(${valid2})`));
49626
49675
  if (operation === "requestApply" || operation === "requestRollback" || operation === "requestVerify") {
49627
49676
  const type2 = operation === "requestVerify" ? IMPORT_VERIFICATION_JOB.type : operation === "requestApply" ? IMPORT_RUN_JOB.apply : IMPORT_RUN_JOB.rollback;
49628
49677
  const resource = operation === "requestVerify" ? IMPORT_VERIFICATION_JOB.resourceKey(input.runId) : IMPORT_RUN_JOB.resourceKey(input.runId);
@@ -50285,7 +50334,7 @@ function createSourceRepository(executor) {
50285
50334
  });
50286
50335
  const admin = sql`EXISTS (SELECT 1 FROM (${permissions}) AS removal_admin
50287
50336
  WHERE removal_admin.scope = 'organization' AND removal_admin.protects = 1)`;
50288
- const visible = sql`EXISTS (SELECT 1 FROM source
50337
+ const visible2 = sql`EXISTS (SELECT 1 FROM source
50289
50338
  WHERE org_id = ${ctx.orgId} AND id = ${input.id}
50290
50339
  AND (project_id IS NULL OR EXISTS (SELECT 1 FROM project
50291
50340
  WHERE project.org_id = ${ctx.orgId} AND project.id = source.project_id AND project.status = 'active')))`;
@@ -50293,13 +50342,13 @@ function createSourceRepository(executor) {
50293
50342
  const [administrator] = await executor.all(probe3(admin, false));
50294
50343
  if (permission2?.held !== 1 || administrator?.held !== 1)
50295
50344
  return "forbidden";
50296
- const [source2] = await executor.all(probe3(visible, false));
50345
+ const [source2] = await executor.all(probe3(visible2, false));
50297
50346
  if (source2?.held !== 1)
50298
50347
  return "not_found";
50299
50348
  const accept = acceptRemovalStatement(ctx, { sourceId: input.id, refusal: input.refusal });
50300
50349
  const outcome3 = await runOrgFenced(executor, ctx, fence2, assertGuard(held, ctx), [
50301
50350
  ...assertCheck(admin),
50302
- ...assertCheck(visible),
50351
+ ...assertCheck(visible2),
50303
50352
  accept,
50304
50353
  ...assertCheck(sql`changes() = 1`),
50305
50354
  auditPendingStatement(ctx, input.audit)
@@ -50310,7 +50359,7 @@ function createSourceRepository(executor) {
50310
50359
  return "forbidden";
50311
50360
  if (outcome3.reason === "indeterminate")
50312
50361
  return "indeterminate";
50313
- const [remaining] = await executor.all(probe3(visible, false));
50362
+ const [remaining] = await executor.all(probe3(visible2, false));
50314
50363
  return remaining?.held === 1 ? "conflict" : "not_found";
50315
50364
  },
50316
50365
  async getVisible(ctx, input) {
@@ -51317,7 +51366,7 @@ function distTagStatementGroups(ctx, guard, request) {
51317
51366
  [removeHistory, remove2],
51318
51367
  [advance]
51319
51368
  ];
51320
- const statementCount = groups.reduce((sum, group) => sum + group.length, 0);
51369
+ const statementCount = groups.reduce((sum, group2) => sum + group2.length, 0);
51321
51370
  const setOffset = head.length + probes2.length;
51322
51371
  return {
51323
51372
  groups,
@@ -52465,7 +52514,7 @@ function createCatalogueWriter(executor, options = {}) {
52465
52514
  versions: [input.version]
52466
52515
  };
52467
52516
  const bound3 = (statements) => parameterBytes(statements.map((s) => bindPackage(s, placeholder, lookup)));
52468
- const group = (build) => {
52517
+ const group2 = (build) => {
52469
52518
  try {
52470
52519
  return bound3(build().statements);
52471
52520
  } catch (error2) {
@@ -52475,7 +52524,7 @@ function createCatalogueWriter(executor, options = {}) {
52475
52524
  throw error2;
52476
52525
  }
52477
52526
  };
52478
- return Math.max(group(() => versionUpdateStatements(ctx, guard, request)), group(() => versionInsertStatements(ctx, guard, request)));
52527
+ return Math.max(group2(() => versionUpdateStatements(ctx, guard, request)), group2(() => versionInsertStatements(ctx, guard, request)));
52479
52528
  },
52480
52529
  syncPackageCost({ versions, tags, guardStatements: guard }) {
52481
52530
  if (!Number.isSafeInteger(versions) || versions < 0 || versions > CATALOGUE_SYNC_VERSIONS_PER_CALL || !Number.isSafeInteger(tags) || tags < 0 || tags > MAX_TAGS_PER_CALL || !Number.isSafeInteger(guard) || guard < 1)
@@ -52548,7 +52597,7 @@ function createCatalogueWriter(executor, options = {}) {
52548
52597
  insert?.statements ?? [],
52549
52598
  ...tags?.groups ?? [],
52550
52599
  [lookup]
52551
- ].map((group) => group.map((statement14) => {
52600
+ ].map((group2) => group2.map((statement14) => {
52552
52601
  const bound3 = statement14 === tagAdvance ? advance : bindPackage(statement14, placeholder, lookup);
52553
52602
  return /^(insert into "version" |update "version" )/i.test(bound3.sql) ? { ...bound3, sql: `${bound3.sql} returning id, version` } : bound3;
52554
52603
  }));
@@ -52561,17 +52610,17 @@ function createCatalogueWriter(executor, options = {}) {
52561
52610
  };
52562
52611
  const planned = [];
52563
52612
  let current = [];
52564
- for (const group of groups) {
52565
- if (group.length === 0)
52613
+ for (const group2 of groups) {
52614
+ if (group2.length === 0)
52566
52615
  continue;
52567
- checkBatch(group);
52616
+ checkBatch(group2);
52568
52617
  try {
52569
- checkBatch(sealBatch([...current, ...group]).statements);
52618
+ checkBatch(sealBatch([...current, ...group2]).statements);
52570
52619
  } catch {
52571
52620
  planned.push(sealBatch(current));
52572
52621
  current = [...guard];
52573
52622
  }
52574
- current.push(...group);
52623
+ current.push(...group2);
52575
52624
  }
52576
52625
  if (current.length > 0)
52577
52626
  planned.push(sealBatch(current));
@@ -52597,7 +52646,7 @@ function createCatalogueWriter(executor, options = {}) {
52597
52646
  offset += update?.statements.length ?? 0;
52598
52647
  const inserted = insert?.result(results.slice(offset, offset + insert.statements.length));
52599
52648
  offset += insert?.statements.length ?? 0;
52600
- const tagStatementCount = tags?.groups.reduce((sum, group) => sum + group.length, 0) ?? 0;
52649
+ const tagStatementCount = tags?.groups.reduce((sum, group2) => sum + group2.length, 0) ?? 0;
52601
52650
  const tagResult = tags?.result(results.slice(offset, offset + tagStatementCount));
52602
52651
  const packageId = results.at(-1)?.rows[0]?.["id"];
52603
52652
  if (typeof packageId !== "string")
@@ -53328,7 +53377,7 @@ function openApiRoute(document3) {
53328
53377
  }
53329
53378
 
53330
53379
  // packages/core/dist/api/openapi-document.js
53331
- var openApiDocument = JSON.parse('{"components":{"schemas":{"ErrorEnvelope":{"additionalProperties":false,"properties":{"error":{"additionalProperties":false,"dependentSchemas":{"problems":{"properties":{"code":{"const":"weak_password"}}}},"properties":{"code":{"type":"string"},"details":{"items":{"additionalProperties":false,"properties":{"code":{"enum":["invalid_type","too_small","too_big","invalid_format","invalid_value","unrecognized_keys","invalid_union","invalid","invalid_encoding","too_deep","invalid_json"],"type":"string"},"location":{"enum":["params","query","body"],"type":"string"},"path":{"type":"string"}},"required":["path","code"],"type":"object"},"maxItems":20,"type":"array"},"message":{"type":"string"},"problems":{"items":{"enum":["too_short","too_long","equals_email","not_well_formed"],"type":"string"},"minItems":1,"type":"array"},"requestId":{"type":"string"}},"required":["code","message","requestId"],"type":"object"}},"required":["error"],"type":"object"}},"securitySchemes":{"bearer":{"scheme":"bearer","type":"http"},"session":{"description":"Session authentication. Send the X-CSRF-Token header on state-changing requests.","in":"cookie","name":"__Host-pb_session","type":"apiKey"}}},"info":{"title":"Package Broker","version":"2"},"jsonSchemaDialect":"https://json-schema.org/draft/2020-12/schema","openapi":"3.1.0","paths":{"/_pb/audit":{"get":{"operationId":"listAudit","parameters":[{"in":"query","name":"action","required":false,"schema":{"maxLength":200,"minLength":1,"type":"string"}},{"in":"query","name":"actor","required":false,"schema":{"maxLength":200,"minLength":1,"type":"string"}},{"in":"query","name":"after","required":false,"schema":{"maxLength":200,"minLength":1,"type":"string"}},{"in":"query","name":"limit","required":false,"schema":{"maxLength":16,"pattern":"^[0-9]+$","type":"string"}},{"in":"query","name":"project","required":false,"schema":{"maxLength":200,"minLength":1,"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"additionalProperties":false,"properties":{"items":{"items":{"additionalProperties":false,"properties":{"action":{"type":"string"},"actor":{"additionalProperties":false,"properties":{"id":{"type":["string","null"]},"type":{"type":"string"}},"required":["type","id"],"type":"object"},"createdAt":{"type":"string"},"id":{"type":"string"},"payload":{"additionalProperties":false,"properties":{"changes":{"additionalProperties":{"additionalProperties":false,"properties":{"new":{"anyOf":[{"type":"string"},{"type":"number"},{"type":"boolean"},{"type":"null"},{"items":{"type":"string"},"type":"array"}]},"old":{"anyOf":[{"type":"string"},{"type":"number"},{"type":"boolean"},{"type":"null"},{"items":{"type":"string"},"type":"array"}]}},"type":"object"},"propertyNames":{"type":"string"},"type":"object"},"op_id":{"type":"string"},"request_id":{"type":"string"}},"type":"object"},"projectId":{"type":["string","null"]},"seq":{"maximum":9007199254740991,"minimum":-9007199254740991,"type":"integer"},"targetId":{"type":["string","null"]},"targetType":{"type":"string"}},"required":["id","seq","action","actor","targetType","targetId","projectId","createdAt","payload"],"type":"object"},"type":"array"},"next":{"type":["string","null"]}},"required":["items","next"],"type":"object"}}},"description":"Response"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Invalid request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Authentication required"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Access denied"}},"security":[{"session":[]},{"bearer":[]}],"summary":"List audit events","tags":["audit"],"x-pb-boundary":"organization","x-pb-permission":"org:audit:read","x-pb-session-only":false}},"/_pb/audit/head":{"get":{"operationId":"auditHead","responses":{"200":{"content":{"application/json":{"schema":{"additionalProperties":false,"properties":{"hash":{"type":"string"},"lastVerifiedAt":{"type":["string","null"]},"pendingCount":{"maximum":9007199254740991,"minimum":-9007199254740991,"type":"integer"},"seq":{"maximum":9007199254740991,"minimum":-9007199254740991,"type":"integer"}},"required":["seq","hash","pendingCount","lastVerifiedAt"],"type":"object"}}},"description":"Response"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Invalid request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Authentication required"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Access denied"}},"security":[{"session":[]},{"bearer":[]}],"summary":"Read audit chain head","tags":["audit"],"x-pb-boundary":"organization","x-pb-permission":"org:audit:read","x-pb-session-only":false}},"/_pb/auth/local/login":{"post":{"operationId":"localLogin","requestBody":{"content":{"application/json":{"schema":{"additionalProperties":false,"properties":{"code":{"maxLength":1024,"type":"string"},"email":{"maxLength":1024,"type":"string"},"password":{"maxLength":1024,"type":"string"}},"required":["email","password","code"],"type":"object"}}},"required":true},"responses":{"204":{"description":"No content"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Invalid request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Authentication required"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Access denied; Reauthentication required"},"413":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Payload too large"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Unsupported media type"}},"security":[],"summary":"Sign in with the local login","tags":["auth"],"x-pb-boundary":"none","x-pb-permission":null,"x-pb-session-only":false}},"/_pb/auth/local/reauth":{"post":{"operationId":"localReauth","requestBody":{"content":{"application/json":{"schema":{"additionalProperties":false,"properties":{"code":{"maxLength":1024,"type":"string"},"password":{"maxLength":1024,"type":"string"}},"required":["password","code"],"type":"object"}}},"required":true},"responses":{"204":{"description":"No content"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Invalid request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Authentication required"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Access denied; Reauthentication required"},"413":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Payload too large"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Unsupported media type"}},"security":[],"summary":"Re-authenticate with the local login","tags":["auth"],"x-pb-boundary":"none","x-pb-permission":null,"x-pb-session-only":false}},"/_pb/auth/local/setup/finish":{"post":{"operationId":"finishLocalSetup","requestBody":{"content":{"application/json":{"schema":{"additionalProperties":false,"properties":{"code":{"maxLength":1024,"type":"string"},"password":{"maxLength":1024,"type":"string"},"token":{"maxLength":1024,"type":"string"}},"required":["token","password","code"],"type":"object"}}},"required":true},"responses":{"204":{"description":"No content"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Invalid request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Authentication required"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Access denied; Reauthentication required"},"413":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Payload too large"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Unsupported media type"}},"security":[],"summary":"Finish the local login setup and sign in","tags":["auth"],"x-pb-boundary":"none","x-pb-permission":null,"x-pb-session-only":false}},"/_pb/auth/local/setup/start":{"post":{"operationId":"startLocalSetup","requestBody":{"content":{"application/json":{"schema":{"additionalProperties":false,"properties":{"token":{"maxLength":1024,"type":"string"}},"required":["token"],"type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"additionalProperties":false,"properties":{"provisioningUri":{"type":"string"},"secret":{"type":"string"}},"required":["provisioningUri","secret"],"type":"object"}}},"description":"Response"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Invalid request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Authentication required"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Access denied; Reauthentication required"},"413":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Payload too large"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Unsupported media type"}},"security":[],"summary":"Start the local login setup","tags":["auth"],"x-pb-boundary":"none","x-pb-permission":null,"x-pb-session-only":false}},"/_pb/auth/logout":{"post":{"operationId":"logout","responses":{"204":{"description":"No content"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Invalid request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Authentication required"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Access denied; Reauthentication required"}},"security":[],"summary":"End the current session","tags":["session"],"x-pb-boundary":"none","x-pb-permission":null,"x-pb-session-only":false}},"/_pb/auth/providers":{"get":{"operationId":"listAuthProviders","responses":{"200":{"content":{"application/json":{"schema":{"additionalProperties":false,"properties":{"local":{"type":"boolean"},"providers":{"items":{"additionalProperties":false,"properties":{"displayName":{"type":"string"},"id":{"type":"string"},"kind":{"enum":["cloudflare-access","oidc"],"type":"string"},"supportsReauth":{"type":"boolean"}},"required":["id","kind","displayName","supportsReauth"],"type":"object"},"type":"array"}},"required":["providers","local"],"type":"object"}}},"description":"Response"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Invalid request"}},"security":[],"summary":"List the sign-in methods","tags":["auth"],"x-pb-boundary":"none","x-pb-permission":null,"x-pb-session-only":false}},"/_pb/auth/sso/{provider}/callback":{"get":{"operationId":"finishSsoLogin","parameters":[{"in":"path","name":"provider","required":true,"schema":{"type":"string"}}],"responses":{"303":{"description":"No content"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Invalid request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Authentication required"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Not found"}},"security":[],"summary":"Finish a single sign-on login or re-authentication","tags":["auth"],"x-pb-boundary":"none","x-pb-permission":null,"x-pb-session-only":false}},"/_pb/auth/sso/{provider}/start":{"post":{"operationId":"startSsoLogin","parameters":[{"in":"path","name":"provider","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"additionalProperties":false,"properties":{"purpose":{"enum":["login","reauth"],"type":"string"},"returnTo":{"type":"string"}},"required":["purpose"],"type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"additionalProperties":false,"properties":{"location":{"type":"string"}},"required":["location"],"type":"object"}}},"description":"Response"},"303":{"description":"No content"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Invalid request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Authentication required"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Access denied; Reauthentication required"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Not found"},"413":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Payload too large"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Unsupported media type"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Upstream request refused; Bad gateway"}},"security":[],"summary":"Start a single sign-on login or re-authentication","tags":["auth"],"x-pb-boundary":"none","x-pb-permission":null,"x-pb-session-only":false}},"/_pb/grants":{"get":{"operationId":"listGrants","parameters":[{"in":"query","name":"after","required":false,"schema":{"pattern":"^[0-7][0-9A-HJKMNP-TV-Z]{25}$","type":"string"}},{"in":"query","name":"limit","required":false,"schema":{"pattern":"^([1-9][0-9]?|100)$","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"additionalProperties":false,"properties":{"items":{"items":{"additionalProperties":false,"properties":{"createdAt":{"type":"string"},"id":{"type":"string"},"revision":{"maximum":9007199254740991,"minimum":-9007199254740991,"type":"integer"},"roleId":{"type":"string"},"subject":{"anyOf":[{"additionalProperties":false,"properties":{"type":{"const":"email","type":"string"},"value":{"type":"string"}},"required":["type"],"type":"object"},{"additionalProperties":false,"properties":{"provider":{"type":"string"},"type":{"const":"group","type":"string"},"value":{"type":"string"}},"required":["type","provider"],"type":"object"}]}},"required":["id","subject","roleId","createdAt","revision"],"type":"object"},"type":"array"},"next":{"type":["string","null"]}},"required":["items","next"],"type":"object"}}},"description":"Response"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Invalid request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Authentication required"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Access denied"},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Service unavailable"}},"security":[{"session":[]},{"bearer":[]}],"summary":"List organization grants","tags":["grants"],"x-pb-boundary":"organization","x-pb-permission":"org:grants:read","x-pb-session-only":false},"post":{"operationId":"createGrant","requestBody":{"content":{"application/json":{"schema":{"additionalProperties":false,"properties":{"roleId":{"pattern":"^[0-7][0-9A-HJKMNP-TV-Z]{25}$","type":"string"},"subject":{"anyOf":[{"additionalProperties":false,"properties":{"type":{"const":"email","type":"string"},"value":{"maxLength":320,"minLength":1,"type":"string"}},"required":["type","value"],"type":"object"},{"additionalProperties":false,"properties":{"provider":{"maxLength":64,"minLength":1,"type":"string"},"type":{"const":"group","type":"string"},"value":{"maxLength":512,"minLength":1,"type":"string"}},"required":["type","provider","value"],"type":"object"}]}},"required":["subject","roleId"],"type":"object"}}},"required":true},"responses":{"201":{"content":{"application/json":{"schema":{"additionalProperties":false,"properties":{"id":{"pattern":"^[0-7][0-9A-HJKMNP-TV-Z]{25}$","type":"string"}},"required":["id"],"type":"object"}}},"description":"Response"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Invalid request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Authentication required"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Access denied"},"413":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Payload too large"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Unsupported media type"},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Service unavailable"}},"security":[{"session":[]}],"summary":"Add an organization grant","tags":["grants"],"x-pb-boundary":"organization","x-pb-permission":"org:grants:write","x-pb-session-only":true}},"/_pb/grants/{grant}":{"delete":{"operationId":"revokeGrant","parameters":[{"in":"path","name":"grant","required":true,"schema":{"pattern":"^[0-7][0-9A-HJKMNP-TV-Z]{25}$","type":"string"}},{"in":"header","name":"If-Match","required":true,"schema":{"pattern":"^\\"r([1-9][0-9]*)\\"$","type":"string"}}],"responses":{"204":{"description":"No content"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Invalid request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Authentication required"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Access denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Not found"},"412":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Precondition failed"},"428":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Precondition required"},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Service unavailable"}},"security":[{"session":[]}],"summary":"Revoke a grant","tags":["grants"],"x-pb-boundary":"organization","x-pb-permission":"org:grants:write","x-pb-session-only":true},"patch":{"operationId":"changeGrant","parameters":[{"in":"path","name":"grant","required":true,"schema":{"pattern":"^[0-7][0-9A-HJKMNP-TV-Z]{25}$","type":"string"}},{"in":"header","name":"If-Match","required":true,"schema":{"pattern":"^\\"r([1-9][0-9]*)\\"$","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"additionalProperties":false,"properties":{"roleId":{"pattern":"^[0-7][0-9A-HJKMNP-TV-Z]{25}$","type":"string"}},"required":["roleId"],"type":"object"}}},"required":true},"responses":{"204":{"description":"No content"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Invalid request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Authentication required"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Access denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Not found"},"412":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Precondition failed"},"413":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Payload too large"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Unsupported media type"},"428":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Precondition required"},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Service unavailable"}},"security":[{"session":[]}],"summary":"Change the role of a grant","tags":["grants"],"x-pb-boundary":"organization","x-pb-permission":"org:grants:write","x-pb-session-only":true}},"/_pb/import-runs":{"get":{"operationId":"listImportRuns","parameters":[{"in":"query","name":"cursor","required":false,"schema":{"maxLength":4096,"minLength":1,"type":"string"}},{"in":"query","name":"limit","required":false,"schema":{"pattern":"^([1-9][0-9]?|100)$","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"additionalProperties":false,"properties":{"items":{"items":{"additionalProperties":false,"properties":{"acceptedAt":{"type":["string","null"]},"approvedAt":{"type":["string","null"]},"approvedByUserId":{"type":["string","null"]},"beforeImageExpiresAt":{"type":["string","null"]},"credentialWindowUntil":{"type":["string","null"]},"id":{"pattern":"^[0-7][0-9A-HJKMNP-TV-Z]{25}$","type":"string"},"planHash":{"type":["string","null"]},"state":{"enum":["planned","applying","failed","applied","verifying","verified","rolled_back","cancelled"],"type":"string"}},"required":["id","state","planHash","approvedAt","approvedByUserId","acceptedAt","beforeImageExpiresAt"],"type":"object"},"type":"array"},"next":{"type":["string","null"]}},"required":["items","next"],"type":"object"}}},"description":"Response"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Invalid request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Authentication required"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Access denied"}},"security":[{"session":[]},{"bearer":[]}],"summary":"List import runs","tags":["imports"],"x-pb-boundary":"organization","x-pb-permission":"org:import:write","x-pb-session-only":false},"post":{"operationId":"createImportRun","requestBody":{"content":{"application/json":{"schema":{}}},"required":true},"responses":{"201":{"content":{"application/json":{"schema":{"additionalProperties":false,"properties":{"id":{"pattern":"^[0-7][0-9A-HJKMNP-TV-Z]{25}$","type":"string"},"planHash":{"type":"string"},"state":{"const":"planned","type":"string"}},"required":["id","planHash","state"],"type":"object"}}},"description":"Response"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Invalid request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Authentication required"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Access denied"},"413":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Payload too large"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Unsupported media type"}},"security":[{"session":[]},{"bearer":[]}],"summary":"Plan an import","tags":["imports"],"x-pb-boundary":"organization","x-pb-permission":"org:import:write","x-pb-session-only":false}},"/_pb/import-runs/{id}":{"get":{"operationId":"getImportRun","parameters":[{"in":"path","name":"id","required":true,"schema":{"pattern":"^[0-7][0-9A-HJKMNP-TV-Z]{25}$","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"additionalProperties":false,"properties":{"acceptedAt":{"type":["string","null"]},"approvedAt":{"type":["string","null"]},"approvedByUserId":{"type":["string","null"]},"beforeImageExpiresAt":{"type":["string","null"]},"credentialWindowUntil":{"type":["string","null"]},"credentials":{"items":{"additionalProperties":false,"properties":{"bound":{"type":"boolean"},"sourceRef":{"type":"string"}},"required":["sourceRef","bound"],"type":"object"},"type":"array"},"id":{"pattern":"^[0-7][0-9A-HJKMNP-TV-Z]{25}$","type":"string"},"planHash":{"type":["string","null"]},"state":{"enum":["planned","applying","failed","applied","verifying","verified","rolled_back","cancelled"],"type":"string"}},"required":["id","state","planHash","approvedAt","approvedByUserId","acceptedAt","beforeImageExpiresAt"],"type":"object"}}},"description":"Response"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Invalid request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Authentication required"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Access denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Not found"}},"security":[{"session":[]},{"bearer":[]}],"summary":"Read an import run","tags":["imports"],"x-pb-boundary":"organization","x-pb-permission":"org:import:write","x-pb-session-only":false}},"/_pb/import-runs/{id}/accept":{"post":{"operationId":"acceptImportRun","parameters":[{"in":"path","name":"id","required":true,"schema":{"pattern":"^[0-7][0-9A-HJKMNP-TV-Z]{25}$","type":"string"}}],"responses":{"204":{"description":"No content"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Invalid request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Authentication required"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Access denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Not found"}},"security":[{"session":[]}],"summary":"accept an import run","tags":["imports"],"x-pb-boundary":"organization","x-pb-permission":"org:import:approve","x-pb-session-only":true}},"/_pb/import-runs/{id}/apply":{"post":{"operationId":"applyImportRun","parameters":[{"in":"path","name":"id","required":true,"schema":{"pattern":"^[0-7][0-9A-HJKMNP-TV-Z]{25}$","type":"string"}}],"responses":{"204":{"description":"No content"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Invalid request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Authentication required"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Access denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Not found"}},"security":[{"session":[]}],"summary":"apply an import run","tags":["imports"],"x-pb-boundary":"organization","x-pb-permission":"org:import:approve","x-pb-session-only":true}},"/_pb/import-runs/{id}/approve":{"post":{"operationId":"approveImportRun","parameters":[{"in":"path","name":"id","required":true,"schema":{"pattern":"^[0-7][0-9A-HJKMNP-TV-Z]{25}$","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"additionalProperties":false,"properties":{"planHash":{"maxLength":64,"type":"string"}},"type":"object"}}},"required":true},"responses":{"204":{"description":"No content"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Invalid request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Authentication required"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Access denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Not found"},"413":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Payload too large"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Unsupported media type"}},"security":[{"session":[]}],"summary":"approve an import run","tags":["imports"],"x-pb-boundary":"organization","x-pb-permission":"org:import:approve","x-pb-session-only":true}},"/_pb/import-runs/{id}/cancel":{"post":{"operationId":"cancelImportRun","parameters":[{"in":"path","name":"id","required":true,"schema":{"pattern":"^[0-7][0-9A-HJKMNP-TV-Z]{25}$","type":"string"}}],"responses":{"204":{"description":"No content"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Invalid request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Authentication required"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Access denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Not found"}},"security":[{"session":[]}],"summary":"cancel an import run","tags":["imports"],"x-pb-boundary":"organization","x-pb-permission":"org:import:approve","x-pb-session-only":true}},"/_pb/import-runs/{id}/credentials/{externalRef}":{"put":{"operationId":"acceptImportCredential","parameters":[{"in":"path","name":"id","required":true,"schema":{"pattern":"^[0-7][0-9A-HJKMNP-TV-Z]{25}$","type":"string"}},{"in":"path","name":"externalRef","required":true,"schema":{"pattern":"^[A-Za-z0-9._:/-]{1,200}$","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"additionalProperties":false,"properties":{"kind":{"enum":["http_basic","bearer","header","query","github_app","npm_token","ssh_key"],"type":"string"},"material":{"maxLength":16384,"type":"string"}},"required":["kind","material"],"type":"object"}}},"required":true},"responses":{"204":{"description":"No content"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Invalid request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Authentication required"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Access denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Not found"},"413":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Payload too large"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Unsupported media type"}},"security":[{"session":[]},{"bearer":[]}],"summary":"Bind an imported source credential","tags":["imports"],"x-pb-boundary":"organization","x-pb-permission":"org:import:write","x-pb-session-only":false}},"/_pb/import-runs/{id}/rollback":{"post":{"operationId":"rollbackImportRun","parameters":[{"in":"path","name":"id","required":true,"schema":{"pattern":"^[0-7][0-9A-HJKMNP-TV-Z]{25}$","type":"string"}}],"responses":{"204":{"description":"No content"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Invalid request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Authentication required"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Access denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Not found"}},"security":[{"session":[]}],"summary":"rollback an import run","tags":["imports"],"x-pb-boundary":"organization","x-pb-permission":"org:import:approve","x-pb-session-only":true}},"/_pb/import-runs/{id}/verify":{"post":{"operationId":"verifyImportRun","parameters":[{"in":"path","name":"id","required":true,"schema":{"pattern":"^[0-7][0-9A-HJKMNP-TV-Z]{25}$","type":"string"}}],"responses":{"204":{"description":"No content"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Invalid request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Authentication required"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Access denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Not found"}},"security":[{"session":[]},{"bearer":[]}],"summary":"verify an import run","tags":["imports"],"x-pb-boundary":"organization","x-pb-permission":"org:import:write","x-pb-session-only":false}},"/_pb/me":{"get":{"operationId":"getMe","responses":{"200":{"content":{"application/json":{"schema":{"additionalProperties":false,"properties":{"organization":{"additionalProperties":false,"properties":{"name":{"type":"string"},"slug":{"type":"string"}},"required":["slug","name"],"type":"object"},"principal":{"additionalProperties":false,"properties":{"id":{"type":"string"},"kind":{"enum":["user","service","customer"],"type":"string"}},"required":["kind","id"],"type":"object"},"user":{"anyOf":[{"additionalProperties":false,"properties":{"displayName":{"type":["string","null"]},"email":{"type":["string","null"]},"id":{"type":"string"}},"required":["id","email","displayName"],"type":"object"},{"type":"null"}]}},"required":["principal","user","organization"],"type":"object"}}},"description":"Response"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Invalid request"}},"security":[],"summary":"Get the caller identity","tags":["me"],"x-pb-boundary":"authenticated","x-pb-permission":null,"x-pb-session-only":false}},"/_pb/me/permissions":{"get":{"operationId":"getMyPermissions","responses":{"200":{"content":{"application/json":{"schema":{"additionalProperties":false,"properties":{"organization":{"items":{"type":"string"},"type":"array"}},"required":["organization"],"type":"object"}}},"description":"Response"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Invalid request"}},"security":[],"summary":"Get caller organization permissions","tags":["permissions"],"x-pb-boundary":"authenticated","x-pb-permission":null,"x-pb-session-only":false}},"/_pb/me/tokens":{"get":{"operationId":"listMyTokens","parameters":[{"in":"query","name":"after","required":false,"schema":{"pattern":"^[0-7][0-9A-HJKMNP-TV-Z]{25}$","type":"string"}},{"in":"query","name":"limit","required":false,"schema":{"pattern":"^(?:[1-9][0-9]?|100)$","type":"string"}},{"in":"query","name":"status","required":false,"schema":{"enum":["active","expired","revoked"],"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"additionalProperties":false,"properties":{"items":{"items":{"additionalProperties":false,"properties":{"createdAt":{"type":"string"},"createdByUserId":{"type":["string","null"]},"expiresAt":{"type":["string","null"]},"id":{"type":"string"},"kind":{"enum":["pat","svc"],"type":"string"},"lastUsedAt":{"type":["string","null"]},"name":{"type":"string"},"projectCount":{"maximum":9007199254740991,"minimum":-9007199254740991,"type":"integer"},"projectId":{"type":["string","null"]},"projectMode":{"anyOf":[{"enum":["all","selected"],"type":"string"},{"type":"null"}]},"readOnly":{"type":"boolean"},"revokedAt":{"type":["string","null"]},"scope":{"enum":["read","write","full"],"type":"string"},"servicePrincipalId":{"type":["string","null"]},"status":{"enum":["active","expired","revoked"],"type":"string"},"userId":{"type":["string","null"]}},"required":["id","kind","name","scope","readOnly","status","projectMode","projectCount","projectId","userId","createdByUserId","servicePrincipalId","createdAt","expiresAt","lastUsedAt","revokedAt"],"type":"object"},"type":"array"},"lifetime":{"additionalProperties":false,"properties":{"personal":{"additionalProperties":false,"properties":{"defaultDays":{"maximum":9007199254740991,"minimum":-9007199254740991,"type":"integer"},"maxDays":{"maximum":9007199254740991,"minimum":-9007199254740991,"type":"integer"}},"required":["maxDays","defaultDays"],"type":"object"},"service":{"additionalProperties":false,"properties":{"defaultDays":{"maximum":9007199254740991,"minimum":-9007199254740991,"type":"integer"},"maxDays":{"maximum":9007199254740991,"minimum":-9007199254740991,"type":"integer"}},"required":["maxDays","defaultDays"],"type":"object"}},"required":["personal","service"],"type":"object"},"next":{"type":["string","null"]}},"required":["items","next","lifetime"],"type":"object"}}},"description":"Response"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Invalid request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Authentication required"}},"security":[{"session":[]}],"summary":"List the caller personal access tokens","tags":["tokens"],"x-pb-boundary":"self","x-pb-permission":null,"x-pb-session-only":true},"post":{"operationId":"createPersonalToken","requestBody":{"content":{"application/json":{"schema":{"additionalProperties":false,"properties":{"expiresAt":{"type":"string"},"lifetimeDays":{"maximum":9007199254740991,"minimum":-9007199254740991,"type":"integer"},"name":{"type":"string"},"projectIds":{"items":{"type":"string"},"maxItems":200,"type":"array"},"projectMode":{"enum":["all","selected"],"type":"string"},"readOnly":{"type":"boolean"},"scope":{"enum":["read","write","full"],"type":"string"}},"required":["name","scope","projectMode","projectIds"],"type":"object"}}},"required":true},"responses":{"201":{"content":{"application/json":{"schema":{"additionalProperties":false,"properties":{"id":{"type":"string"},"token":{"type":"string"}},"required":["id","token"],"type":"object"}}},"description":"Response"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Invalid request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Authentication required"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Reauthentication required"},"413":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Payload too large"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Unsupported media type"},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Service unavailable"}},"security":[{"session":[]}],"summary":"Issue a personal access token","tags":["tokens"],"x-pb-boundary":"self","x-pb-permission":null,"x-pb-session-only":true}},"/_pb/me/tokens/{token}":{"delete":{"operationId":"revokeMyToken","parameters":[{"in":"path","name":"token","required":true,"schema":{"pattern":"^[0-7][0-9A-HJKMNP-TV-Z]{25}$","type":"string"}}],"responses":{"204":{"description":"No content"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Invalid request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Authentication required"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Not found"},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Service unavailable"}},"security":[{"session":[]}],"summary":"Revoke a personal access token","tags":["tokens"],"x-pb-boundary":"self","x-pb-permission":null,"x-pb-session-only":true},"get":{"operationId":"getMyToken","parameters":[{"in":"path","name":"token","required":true,"schema":{"pattern":"^[0-7][0-9A-HJKMNP-TV-Z]{25}$","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"additionalProperties":false,"properties":{"createdAt":{"type":"string"},"createdByUserId":{"type":["string","null"]},"expiresAt":{"type":["string","null"]},"id":{"type":"string"},"kind":{"enum":["pat","svc"],"type":"string"},"lastUsedAt":{"type":["string","null"]},"name":{"type":"string"},"projectCount":{"maximum":9007199254740991,"minimum":-9007199254740991,"type":"integer"},"projectId":{"type":["string","null"]},"projectMode":{"anyOf":[{"enum":["all","selected"],"type":"string"},{"type":"null"}]},"readOnly":{"type":"boolean"},"revokedAt":{"type":["string","null"]},"scope":{"enum":["read","write","full"],"type":"string"},"servicePrincipalId":{"type":["string","null"]},"status":{"enum":["active","expired","revoked"],"type":"string"},"userId":{"type":["string","null"]}},"required":["id","kind","name","scope","readOnly","status","projectMode","projectCount","projectId","userId","createdByUserId","servicePrincipalId","createdAt","expiresAt","lastUsedAt","revokedAt"],"type":"object"}}},"description":"Response"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Invalid request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Authentication required"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Not found"}},"security":[{"session":[]}],"summary":"Get a personal access token","tags":["tokens"],"x-pb-boundary":"self","x-pb-permission":null,"x-pb-session-only":true}},"/_pb/organization":{"get":{"operationId":"getOrganization","responses":{"200":{"content":{"application/json":{"schema":{"additionalProperties":false,"properties":{"createdAt":{"type":"string"},"id":{"type":"string"},"name":{"type":"string"},"settings":{"additionalProperties":false,"properties":{"retentionRemovedUpstreamDays":{"maximum":9007199254740991,"minimum":-9007199254740991,"type":"integer"},"tokenDefaultExpiryDays":{"maximum":9007199254740991,"minimum":-9007199254740991,"type":"integer"},"tokenMaxLifetimeDays":{"additionalProperties":false,"properties":{"personal":{"maximum":9007199254740991,"minimum":-9007199254740991,"type":"integer"},"service":{"maximum":9007199254740991,"minimum":-9007199254740991,"type":"integer"}},"required":["personal","service"],"type":"object"}},"required":["retentionRemovedUpstreamDays","tokenDefaultExpiryDays","tokenMaxLifetimeDays"],"type":"object"},"slug":{"type":"string"},"updatedAt":{"type":"string"}},"required":["id","slug","name","settings","createdAt","updatedAt"],"type":"object"}}},"description":"Response"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Invalid request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Authentication required"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Access denied"}},"security":[{"session":[]},{"bearer":[]}],"summary":"Get the organization","tags":["organization"],"x-pb-boundary":"organization","x-pb-permission":"org:read","x-pb-session-only":false}},"/_pb/packages":{"get":{"operationId":"listPackages","parameters":[{"in":"query","name":"after","required":false,"schema":{"maxLength":464,"pattern":"^(?:composer|npm):[\\\\s\\\\S]+:[0-7][0-9A-HJKMNP-TV-Z]{25}$","type":"string"}},{"in":"query","name":"ecosystem","required":false,"schema":{"enum":["composer","npm"],"type":"string"}},{"in":"query","name":"limit","required":false,"schema":{"pattern":"^(?:[1-9][0-9]?|100)$","type":"string"}},{"in":"query","name":"project","required":false,"schema":{"pattern":"^[0-7][0-9A-HJKMNP-TV-Z]{25}$","type":"string"}},{"in":"query","name":"q","required":false,"schema":{"maxLength":100,"minLength":1,"type":"string"}},{"in":"query","name":"source","required":false,"schema":{"pattern":"^[0-7][0-9A-HJKMNP-TV-Z]{25}$","type":"string"}},{"in":"query","name":"status","required":false,"schema":{"enum":["active","quarantined","tombstoned","removed_upstream"],"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"additionalProperties":false,"properties":{"items":{"items":{"additionalProperties":false,"properties":{"ecosystem":{"enum":["composer","npm"],"type":"string"},"id":{"pattern":"^[0-7][0-9A-HJKMNP-TV-Z]{25}$","type":"string"},"lastSyncedAt":{"type":["string","null"]},"latestVersion":{"type":["string","null"]},"name":{"type":"string"},"source":{"additionalProperties":false,"properties":{"id":{"pattern":"^[0-7][0-9A-HJKMNP-TV-Z]{25}$","type":"string"},"name":{"type":"string"},"projectId":{"anyOf":[{"pattern":"^[0-7][0-9A-HJKMNP-TV-Z]{25}$","type":"string"},{"type":"null"}]},"type":{"enum":["vcs","composer_repository","npm_registry","packagist_proxy","npmjs_proxy","hosted"],"type":"string"}},"required":["id","name","type","projectId"],"type":"object"},"status":{"enum":["active","quarantined","tombstoned","removed_upstream"],"type":"string"},"versionCount":{"maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["id","ecosystem","name","latestVersion","status","source","versionCount","lastSyncedAt"],"type":"object"},"type":"array"},"next":{"anyOf":[{"maxLength":464,"pattern":"^(?:composer|npm):[\\\\s\\\\S]+:[0-7][0-9A-HJKMNP-TV-Z]{25}$","type":"string"},{"type":"null"}]}},"required":["items","next"],"type":"object"}}},"description":"Response"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Invalid request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Authentication required"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Access denied"}},"security":[{"session":[]},{"bearer":[]}],"summary":"List packages","tags":["packages"],"x-pb-boundary":"organization","x-pb-permission":"org:sources:read","x-pb-session-only":false}},"/_pb/packages/{package}/versions":{"get":{"operationId":"listPackageVersions","parameters":[{"in":"path","name":"package","required":true,"schema":{"type":"string"}},{"in":"query","name":"after","required":false,"schema":{"pattern":"^[0-7][0-9A-HJKMNP-TV-Z]{25}$","type":"string"}},{"in":"query","name":"limit","required":false,"schema":{"pattern":"^(?:[1-9][0-9]?|100)$","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"additionalProperties":false,"properties":{"items":{"items":{"additionalProperties":false,"properties":{"id":{"pattern":"^[0-7][0-9A-HJKMNP-TV-Z]{25}$","type":"string"},"publishedAt":{"type":"string"},"removedUpstreamAt":{"type":["string","null"]},"revision":{"exclusiveMinimum":0,"maximum":9007199254740991,"type":"integer"},"stability":{"enum":["dev","alpha","beta","RC","stable"],"type":"string"},"status":{"enum":["active","quarantined","tombstoned","removed_upstream","yanked"],"type":"string"},"tombstonedAt":{"type":["string","null"]},"version":{"type":"string"},"vulnerability":{"additionalProperties":false,"properties":{"advisories":{"items":{"additionalProperties":false,"properties":{"detailsFetchedAt":{"type":["string","null"]},"id":{"type":"string"},"severity":{"additionalProperties":false,"properties":{"entries":{"items":{"additionalProperties":false,"properties":{"score":{"type":"string"},"type":{"type":"string"}},"required":["type","score"],"type":"object"},"type":"array"},"level":{"enum":["critical","high","medium","low","unknown"],"type":"string"}},"required":["level","entries"],"type":"object"},"url":{"type":"null"}},"required":["id","url","severity","detailsFetchedAt"],"type":"object"},"maxItems":20,"type":"array"},"advisoriesTruncated":{"type":"boolean"},"advisoryCount":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"detailsComplete":{"type":"boolean"},"fetchedAt":{"type":["string","null"]},"lastKnownStatus":{"anyOf":[{"enum":["affected","not_affected"],"type":"string"},{"type":"null"}]},"reason":{"anyOf":[{"enum":["not_checked","disabled","unsupported_version","pending","upstream_unavailable","incomplete","expired"],"type":"string"},{"type":"null"}]},"source":{"anyOf":[{"const":"osv","type":"string"},{"type":"null"}]},"status":{"enum":["affected","not_affected","unknown","stale"],"type":"string"}},"required":["status","reason","source","fetchedAt","lastKnownStatus","advisoryCount","advisories","detailsComplete","advisoriesTruncated"],"type":"object"}},"required":["vulnerability","id","version","stability","status","publishedAt","removedUpstreamAt","tombstonedAt","revision"],"type":"object"},"type":"array"},"next":{"anyOf":[{"pattern":"^[0-7][0-9A-HJKMNP-TV-Z]{25}$","type":"string"},{"type":"null"}]}},"required":["items","next"],"type":"object"}}},"description":"Response"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Invalid request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Authentication required"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Access denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Not found"}},"security":[{"session":[]},{"bearer":[]}],"summary":"List package versions","tags":["packages"],"x-pb-boundary":"organization","x-pb-permission":"org:sources:read","x-pb-session-only":false}},"/_pb/packages/{package}/versions/{version}/quarantine":{"post":{"operationId":"quarantinePackageVersion","parameters":[{"in":"path","name":"package","required":true,"schema":{"pattern":"^[0-7][0-9A-HJKMNP-TV-Z]{25}$","type":"string"}},{"in":"path","name":"version","required":true,"schema":{"pattern":"^[0-7][0-9A-HJKMNP-TV-Z]{25}$","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"additionalProperties":false,"properties":{},"type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"additionalProperties":false,"properties":{"id":{"pattern":"^[0-7][0-9A-HJKMNP-TV-Z]{25}$","type":"string"},"status":{"enum":["active","removed_upstream","yanked","quarantined","tombstoned"],"type":"string"}},"required":["id","status"],"type":"object"}}},"description":"Response"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Invalid request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Authentication required"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Access denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Not found"},"413":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Payload too large"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Unsupported media type"}},"security":[{"session":[]}],"summary":"quarantine a package version","tags":["packages"],"x-pb-boundary":"organization","x-pb-permission":"org:packages:manage","x-pb-session-only":true}},"/_pb/packages/{package}/versions/{version}/release":{"post":{"operationId":"releasePackageVersion","parameters":[{"in":"path","name":"package","required":true,"schema":{"pattern":"^[0-7][0-9A-HJKMNP-TV-Z]{25}$","type":"string"}},{"in":"path","name":"version","required":true,"schema":{"pattern":"^[0-7][0-9A-HJKMNP-TV-Z]{25}$","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"additionalProperties":false,"properties":{},"type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"additionalProperties":false,"properties":{"id":{"pattern":"^[0-7][0-9A-HJKMNP-TV-Z]{25}$","type":"string"},"status":{"enum":["active","removed_upstream","yanked","quarantined","tombstoned"],"type":"string"}},"required":["id","status"],"type":"object"}}},"description":"Response"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Invalid request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Authentication required"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Access denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Not found"},"413":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Payload too large"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Unsupported media type"}},"security":[{"session":[]}],"summary":"release a package version","tags":["packages"],"x-pb-boundary":"organization","x-pb-permission":"org:packages:manage","x-pb-session-only":true}},"/_pb/packages/{package}/versions/{version}/tombstone":{"post":{"operationId":"tombstonePackageVersion","parameters":[{"in":"path","name":"package","required":true,"schema":{"pattern":"^[0-7][0-9A-HJKMNP-TV-Z]{25}$","type":"string"}},{"in":"path","name":"version","required":true,"schema":{"pattern":"^[0-7][0-9A-HJKMNP-TV-Z]{25}$","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"additionalProperties":false,"properties":{},"type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"additionalProperties":false,"properties":{"id":{"pattern":"^[0-7][0-9A-HJKMNP-TV-Z]{25}$","type":"string"},"status":{"enum":["active","removed_upstream","yanked","quarantined","tombstoned"],"type":"string"}},"required":["id","status"],"type":"object"}}},"description":"Response"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Invalid request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Authentication required"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Access denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Not found"},"413":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Payload too large"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Unsupported media type"}},"security":[{"session":[]}],"summary":"tombstone a package version","tags":["packages"],"x-pb-boundary":"organization","x-pb-permission":"org:packages:manage","x-pb-session-only":true}},"/_pb/projects":{"get":{"operationId":"listProjects","parameters":[{"in":"query","name":"after","required":false,"schema":{"pattern":"^[0-7][0-9A-HJKMNP-TV-Z]{25}$","type":"string"}},{"in":"query","name":"limit","required":false,"schema":{"pattern":"^([1-9][0-9]?|100)$","type":"string"}},{"in":"query","name":"q","required":false,"schema":{"description":"Case-sensitive slug or name prefix; LIKE wildcards % and _ are refused.","maxLength":200,"minLength":1,"pattern":"^[^%_\\\\u0000-\\\\u001f\\\\u007f-\\\\u009f\\\\u2028\\\\u2029]+$","type":"string"}},{"in":"query","name":"status","required":false,"schema":{"enum":["active","archived"],"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"additionalProperties":false,"properties":{"items":{"items":{"additionalProperties":false,"properties":{"etag":{"type":"string"},"id":{"type":"string"},"name":{"type":"string"},"slug":{"type":"string"},"status":{"enum":["active","archived"],"type":"string"}},"required":["id","slug","name","status","etag"],"type":"object"},"type":"array"},"next":{"type":["string","null"]}},"required":["items","next"],"type":"object"}}},"description":"Response"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Invalid request"},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Service unavailable"}},"security":[],"summary":"List readable projects","tags":["projects"],"x-pb-boundary":"authenticated","x-pb-permission":null,"x-pb-session-only":false},"post":{"operationId":"createProject","requestBody":{"content":{"application/json":{"schema":{"additionalProperties":false,"properties":{"initialRoleId":{"pattern":"^[0-7][0-9A-HJKMNP-TV-Z]{25}$","type":"string"},"name":{"maxLength":1000,"minLength":1,"type":"string"},"requirePublishApproval":{"type":"boolean"},"slug":{"maxLength":200,"minLength":1,"type":"string"},"tokenMaxScope":{"enum":["read","write","full"],"type":"string"}},"required":["slug","name"],"type":"object"}}},"required":true},"responses":{"201":{"content":{"application/json":{"schema":{"additionalProperties":false,"properties":{"id":{"type":"string"},"slug":{"type":"string"}},"required":["id","slug"],"type":"object"}}},"description":"Response"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Invalid request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Authentication required"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Access denied; Reauthentication required"},"413":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Payload too large"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Unsupported media type"},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Service unavailable"}},"security":[{"session":[]}],"summary":"Add a project","tags":["projects"],"x-pb-boundary":"organization","x-pb-permission":"org:projects:create","x-pb-session-only":true}},"/_pb/projects/{project}":{"get":{"operationId":"getProject","parameters":[{"in":"path","name":"project","required":true,"schema":{"pattern":"^[a-z0-9](?:[a-z0-9-]{0,62}[a-z0-9])?$","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"additionalProperties":false,"properties":{"id":{"type":"string"},"name":{"type":"string"},"requirePublishApproval":{"type":"boolean"},"revision":{"maximum":9007199254740991,"minimum":-9007199254740991,"type":"integer"},"slug":{"type":"string"},"status":{"enum":["active","archived"],"type":"string"},"tokenMaxScope":{"enum":["read","write","full"],"type":"string"}},"required":["id","slug","name","status","tokenMaxScope","requirePublishApproval","revision"],"type":"object"}}},"description":"Response"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Invalid request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Authentication required"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Access denied; Reauthentication required"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Not found"},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Service unavailable"}},"security":[{"session":[]},{"bearer":[]}],"summary":"Read a project","tags":["projects"],"x-pb-boundary":"project","x-pb-permission":"project:read","x-pb-session-only":false},"patch":{"operationId":"updateProject","parameters":[{"in":"path","name":"project","required":true,"schema":{"pattern":"^[a-z0-9](?:[a-z0-9-]{0,62}[a-z0-9])?$","type":"string"}},{"in":"header","name":"If-Match","required":true,"schema":{"pattern":"^\\"r([1-9][0-9]*)\\"$","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"additionalProperties":false,"properties":{"name":{"maxLength":1000,"minLength":1,"type":"string"},"requirePublishApproval":{"type":"boolean"},"tokenMaxScope":{"enum":["read","write","full"],"type":"string"}},"type":"object"}}},"required":true},"responses":{"204":{"description":"No content"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Invalid request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Authentication required"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Access denied; Reauthentication required"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Not found"},"412":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Precondition failed"},"413":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Payload too large"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Unsupported media type"},"428":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Precondition required"},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Service unavailable"}},"security":[{"session":[]}],"summary":"Change project settings","tags":["projects"],"x-pb-boundary":"project","x-pb-permission":"project:settings:write","x-pb-session-only":true}},"/_pb/projects/{project}/archive":{"post":{"operationId":"archiveProject","parameters":[{"in":"path","name":"project","required":true,"schema":{"pattern":"^[a-z0-9](?:[a-z0-9-]{0,62}[a-z0-9])?$","type":"string"}},{"in":"header","name":"If-Match","required":true,"schema":{"pattern":"^\\"r([1-9][0-9]*)\\"$","type":"string"}}],"responses":{"204":{"description":"No content"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Invalid request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Authentication required"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Access denied; Reauthentication required"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Not found"},"412":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Precondition failed"},"428":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Precondition required"},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Service unavailable"}},"security":[{"session":[]}],"summary":"Archive a project","tags":["projects"],"x-pb-boundary":"organization","x-pb-permission":"org:projects:archive","x-pb-session-only":true}},"/_pb/projects/{project}/audit":{"get":{"operationId":"listProjectAudit","parameters":[{"in":"path","name":"project","required":true,"schema":{"maxLength":64,"minLength":1,"type":"string"}},{"in":"query","name":"action","required":false,"schema":{"maxLength":200,"minLength":1,"type":"string"}},{"in":"query","name":"actor","required":false,"schema":{"maxLength":200,"minLength":1,"type":"string"}},{"in":"query","name":"after","required":false,"schema":{"maxLength":200,"minLength":1,"type":"string"}},{"in":"query","name":"limit","required":false,"schema":{"maxLength":16,"pattern":"^[0-9]+$","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"additionalProperties":false,"properties":{"items":{"items":{"additionalProperties":false,"properties":{"action":{"type":"string"},"actor":{"additionalProperties":false,"properties":{"id":{"type":["string","null"]},"type":{"type":"string"}},"required":["type","id"],"type":"object"},"createdAt":{"type":"string"},"id":{"type":"string"},"payload":{"additionalProperties":false,"properties":{"changes":{"additionalProperties":{"additionalProperties":false,"properties":{"new":{"anyOf":[{"type":"string"},{"type":"number"},{"type":"boolean"},{"type":"null"},{"items":{"type":"string"},"type":"array"}]},"old":{"anyOf":[{"type":"string"},{"type":"number"},{"type":"boolean"},{"type":"null"},{"items":{"type":"string"},"type":"array"}]}},"type":"object"},"propertyNames":{"type":"string"},"type":"object"},"op_id":{"type":"string"},"request_id":{"type":"string"}},"type":"object"},"projectId":{"type":["string","null"]},"seq":{"maximum":9007199254740991,"minimum":-9007199254740991,"type":"integer"},"targetId":{"type":["string","null"]},"targetType":{"type":"string"}},"required":["id","seq","action","actor","targetType","targetId","projectId","createdAt","payload"],"type":"object"},"type":"array"},"next":{"type":["string","null"]}},"required":["items","next"],"type":"object"}}},"description":"Response"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Invalid request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Authentication required"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Access denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Not found"}},"security":[{"session":[]},{"bearer":[]}],"summary":"List project audit events","tags":["audit"],"x-pb-boundary":"project","x-pb-permission":"project:audit:read","x-pb-session-only":false}},"/_pb/projects/{project}/grants":{"get":{"operationId":"listProjectGrants","parameters":[{"in":"path","name":"project","required":true,"schema":{"pattern":"^[a-z0-9](?:[a-z0-9-]{0,62}[a-z0-9])?$","type":"string"}},{"in":"query","name":"after","required":false,"schema":{"pattern":"^[0-7][0-9A-HJKMNP-TV-Z]{25}$","type":"string"}},{"in":"query","name":"limit","required":false,"schema":{"pattern":"^(?:[1-9][0-9]?|100)$","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"additionalProperties":false,"properties":{"items":{"items":{"additionalProperties":false,"properties":{"createdAt":{"type":"string"},"id":{"pattern":"^[0-7][0-9A-HJKMNP-TV-Z]{25}$","type":"string"},"principal":{"additionalProperties":false,"properties":{"displayName":{"type":"string"},"email":{"type":"string"},"id":{"type":"string"},"kind":{"enum":["user","email","group"],"type":"string"},"provider":{"type":"string"}},"required":["kind","id","displayName"],"type":"object"},"revision":{"exclusiveMinimum":0,"maximum":9007199254740991,"type":"integer"},"role":{"additionalProperties":false,"properties":{"id":{"pattern":"^[0-7][0-9A-HJKMNP-TV-Z]{25}$","type":"string"},"name":{"type":"string"},"permissions":{"items":{"type":"string"},"type":"array"}},"required":["id","name","permissions"],"type":"object"}},"required":["id","revision","createdAt","principal","role"],"type":"object"},"type":"array"},"next":{"anyOf":[{"pattern":"^[0-7][0-9A-HJKMNP-TV-Z]{25}$","type":"string"},{"type":"null"}]}},"required":["items","next"],"type":"object"}}},"description":"Response"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Invalid request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Authentication required"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Access denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Not found"}},"security":[{"session":[]},{"bearer":[]}],"summary":"List project grants and their principals","tags":["project-access"],"x-pb-boundary":"project","x-pb-permission":"project:grants:read","x-pb-session-only":false},"post":{"operationId":"createProjectGrant","parameters":[{"in":"path","name":"project","required":true,"schema":{"pattern":"^[a-z0-9](?:[a-z0-9-]{0,62}[a-z0-9])?$","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"additionalProperties":false,"properties":{"roleId":{"pattern":"^[0-7][0-9A-HJKMNP-TV-Z]{25}$","type":"string"},"subject":{"anyOf":[{"additionalProperties":false,"properties":{"type":{"const":"email","type":"string"},"value":{"maxLength":320,"minLength":1,"type":"string"}},"required":["type","value"],"type":"object"},{"additionalProperties":false,"properties":{"provider":{"maxLength":64,"minLength":1,"type":"string"},"type":{"const":"group","type":"string"},"value":{"maxLength":256,"minLength":1,"type":"string"}},"required":["type","provider","value"],"type":"object"}]}},"required":["subject","roleId"],"type":"object"}}},"required":true},"responses":{"201":{"content":{"application/json":{"schema":{"additionalProperties":false,"properties":{"id":{"pattern":"^[0-7][0-9A-HJKMNP-TV-Z]{25}$","type":"string"}},"required":["id"],"type":"object"}}},"description":"Response"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Invalid request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Authentication required"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Access denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Not found"},"413":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Payload too large"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Unsupported media type"},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Service unavailable"}},"security":[{"session":[]}],"summary":"Grant project access","tags":["project-access"],"x-pb-boundary":"project","x-pb-permission":"project:grants:write","x-pb-session-only":true}},"/_pb/projects/{project}/grants/{grant}":{"delete":{"operationId":"revokeProjectGrant","parameters":[{"in":"path","name":"project","required":true,"schema":{"pattern":"^[a-z0-9](?:[a-z0-9-]{0,62}[a-z0-9])?$","type":"string"}},{"in":"path","name":"grant","required":true,"schema":{"pattern":"^[0-7][0-9A-HJKMNP-TV-Z]{25}$","type":"string"}},{"in":"header","name":"If-Match","required":true,"schema":{"pattern":"^\\"r([1-9][0-9]*)\\"$","type":"string"}}],"responses":{"204":{"description":"No content"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Invalid request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Authentication required"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Access denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Not found"},"412":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Precondition failed"},"428":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Precondition required"},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Service unavailable"}},"security":[{"session":[]}],"summary":"Revoke a project grant","tags":["project-access"],"x-pb-boundary":"project","x-pb-permission":"project:grants:write","x-pb-session-only":true},"patch":{"operationId":"changeProjectGrant","parameters":[{"in":"path","name":"project","required":true,"schema":{"pattern":"^[a-z0-9](?:[a-z0-9-]{0,62}[a-z0-9])?$","type":"string"}},{"in":"path","name":"grant","required":true,"schema":{"pattern":"^[0-7][0-9A-HJKMNP-TV-Z]{25}$","type":"string"}},{"in":"header","name":"If-Match","required":true,"schema":{"pattern":"^\\"r([1-9][0-9]*)\\"$","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"additionalProperties":false,"properties":{"roleId":{"pattern":"^[0-7][0-9A-HJKMNP-TV-Z]{25}$","type":"string"}},"required":["roleId"],"type":"object"}}},"required":true},"responses":{"204":{"description":"No content"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Invalid request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Authentication required"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Access denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Not found"},"412":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Precondition failed"},"413":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Payload too large"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Unsupported media type"},"428":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Precondition required"},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Service unavailable"}},"security":[{"session":[]}],"summary":"Change the role of a project grant","tags":["project-access"],"x-pb-boundary":"project","x-pb-permission":"project:grants:write","x-pb-session-only":true}},"/_pb/projects/{project}/packages":{"get":{"operationId":"listProjectPackages","parameters":[{"in":"path","name":"project","required":true,"schema":{"pattern":"^[a-z0-9](?:[a-z0-9-]{0,62}[a-z0-9])?$","type":"string"}},{"in":"query","name":"after","required":false,"schema":{"maxLength":437,"pattern":"^(?:composer|npm):[\\\\s\\\\S]+$","type":"string"}},{"in":"query","name":"ecosystem","required":false,"schema":{"enum":["composer","npm"],"type":"string"}},{"in":"query","name":"limit","required":false,"schema":{"pattern":"^(?:[1-9][0-9]?|100)$","type":"string"}},{"in":"query","name":"q","required":false,"schema":{"maxLength":100,"minLength":1,"type":"string"}},{"in":"query","name":"source","required":false,"schema":{"pattern":"^[0-7][0-9A-HJKMNP-TV-Z]{25}$","type":"string"}},{"in":"query","name":"status","required":false,"schema":{"enum":["active","quarantined","tombstoned","removed_upstream"],"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"additionalProperties":false,"properties":{"items":{"items":{"additionalProperties":false,"properties":{"ecosystem":{"enum":["composer","npm"],"type":"string"},"id":{"pattern":"^[0-7][0-9A-HJKMNP-TV-Z]{25}$","type":"string"},"lastSyncedAt":{"type":["string","null"]},"latestVersion":{"type":["string","null"]},"name":{"type":"string"},"source":{"additionalProperties":false,"properties":{"id":{"pattern":"^[0-7][0-9A-HJKMNP-TV-Z]{25}$","type":"string"},"name":{"type":"string"},"projectId":{"anyOf":[{"pattern":"^[0-7][0-9A-HJKMNP-TV-Z]{25}$","type":"string"},{"type":"null"}]},"type":{"enum":["vcs","composer_repository","npm_registry","packagist_proxy","npmjs_proxy","hosted"],"type":"string"}},"required":["id","name","type","projectId"],"type":"object"},"status":{"enum":["active","quarantined","tombstoned","removed_upstream"],"type":"string"},"versionCount":{"maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["id","ecosystem","name","latestVersion","status","source","versionCount","lastSyncedAt"],"type":"object"},"type":"array"},"next":{"anyOf":[{"maxLength":437,"pattern":"^(?:composer|npm):[\\\\s\\\\S]+$","type":"string"},{"type":"null"}]}},"required":["items","next"],"type":"object"}}},"description":"Response"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Invalid request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Authentication required"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Access denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Not found"}},"security":[{"session":[]},{"bearer":[]}],"summary":"List packages","tags":["packages"],"x-pb-boundary":"project","x-pb-permission":"project:packages:read","x-pb-session-only":false}},"/_pb/projects/{project}/packages/{package}/versions":{"get":{"operationId":"listProjectPackageVersions","parameters":[{"in":"path","name":"project","required":true,"schema":{"pattern":"^[a-z0-9](?:[a-z0-9-]{0,62}[a-z0-9])?$","type":"string"}},{"in":"path","name":"package","required":true,"schema":{"type":"string"}},{"in":"query","name":"after","required":false,"schema":{"pattern":"^[0-7][0-9A-HJKMNP-TV-Z]{25}$","type":"string"}},{"in":"query","name":"limit","required":false,"schema":{"pattern":"^(?:[1-9][0-9]?|100)$","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"additionalProperties":false,"properties":{"items":{"items":{"additionalProperties":false,"properties":{"id":{"pattern":"^[0-7][0-9A-HJKMNP-TV-Z]{25}$","type":"string"},"publishedAt":{"type":"string"},"removedUpstreamAt":{"type":["string","null"]},"revision":{"exclusiveMinimum":0,"maximum":9007199254740991,"type":"integer"},"stability":{"enum":["dev","alpha","beta","RC","stable"],"type":"string"},"status":{"enum":["active","quarantined","tombstoned","removed_upstream","yanked"],"type":"string"},"tombstonedAt":{"type":["string","null"]},"version":{"type":"string"},"vulnerability":{"additionalProperties":false,"properties":{"advisories":{"items":{"additionalProperties":false,"properties":{"detailsFetchedAt":{"type":["string","null"]},"id":{"type":"string"},"severity":{"additionalProperties":false,"properties":{"entries":{"items":{"additionalProperties":false,"properties":{"score":{"type":"string"},"type":{"type":"string"}},"required":["type","score"],"type":"object"},"type":"array"},"level":{"enum":["critical","high","medium","low","unknown"],"type":"string"}},"required":["level","entries"],"type":"object"},"url":{"type":"null"}},"required":["id","url","severity","detailsFetchedAt"],"type":"object"},"maxItems":20,"type":"array"},"advisoriesTruncated":{"type":"boolean"},"advisoryCount":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"detailsComplete":{"type":"boolean"},"fetchedAt":{"type":["string","null"]},"lastKnownStatus":{"anyOf":[{"enum":["affected","not_affected"],"type":"string"},{"type":"null"}]},"reason":{"anyOf":[{"enum":["not_checked","disabled","unsupported_version","pending","upstream_unavailable","incomplete","expired"],"type":"string"},{"type":"null"}]},"source":{"anyOf":[{"const":"osv","type":"string"},{"type":"null"}]},"status":{"enum":["affected","not_affected","unknown","stale"],"type":"string"}},"required":["status","reason","source","fetchedAt","lastKnownStatus","advisoryCount","advisories","detailsComplete","advisoriesTruncated"],"type":"object"}},"required":["vulnerability","id","version","stability","status","publishedAt","removedUpstreamAt","tombstonedAt","revision"],"type":"object"},"type":"array"},"next":{"anyOf":[{"pattern":"^[0-7][0-9A-HJKMNP-TV-Z]{25}$","type":"string"},{"type":"null"}]}},"required":["items","next"],"type":"object"}}},"description":"Response"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Invalid request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Authentication required"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Access denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Not found"}},"security":[{"session":[]},{"bearer":[]}],"summary":"List package versions","tags":["packages"],"x-pb-boundary":"project","x-pb-permission":"project:packages:read","x-pb-session-only":false}},"/_pb/projects/{project}/packages/{package}/versions/{version}/quarantine":{"post":{"operationId":"quarantineProjectPackageVersion","parameters":[{"in":"path","name":"project","required":true,"schema":{"pattern":"^[a-z0-9](?:[a-z0-9-]{0,62}[a-z0-9])?$","type":"string"}},{"in":"path","name":"package","required":true,"schema":{"pattern":"^[0-7][0-9A-HJKMNP-TV-Z]{25}$","type":"string"}},{"in":"path","name":"version","required":true,"schema":{"pattern":"^[0-7][0-9A-HJKMNP-TV-Z]{25}$","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"additionalProperties":false,"properties":{},"type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"additionalProperties":false,"properties":{"id":{"pattern":"^[0-7][0-9A-HJKMNP-TV-Z]{25}$","type":"string"},"status":{"enum":["active","removed_upstream","yanked","quarantined","tombstoned"],"type":"string"}},"required":["id","status"],"type":"object"}}},"description":"Response"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Invalid request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Authentication required"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Access denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Not found"},"413":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Payload too large"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Unsupported media type"}},"security":[{"session":[]}],"summary":"quarantine a package version","tags":["packages"],"x-pb-boundary":"project","x-pb-permission":"project:packages:manage","x-pb-session-only":true}},"/_pb/projects/{project}/packages/{package}/versions/{version}/release":{"post":{"operationId":"releaseProjectPackageVersion","parameters":[{"in":"path","name":"project","required":true,"schema":{"pattern":"^[a-z0-9](?:[a-z0-9-]{0,62}[a-z0-9])?$","type":"string"}},{"in":"path","name":"package","required":true,"schema":{"pattern":"^[0-7][0-9A-HJKMNP-TV-Z]{25}$","type":"string"}},{"in":"path","name":"version","required":true,"schema":{"pattern":"^[0-7][0-9A-HJKMNP-TV-Z]{25}$","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"additionalProperties":false,"properties":{},"type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"additionalProperties":false,"properties":{"id":{"pattern":"^[0-7][0-9A-HJKMNP-TV-Z]{25}$","type":"string"},"status":{"enum":["active","removed_upstream","yanked","quarantined","tombstoned"],"type":"string"}},"required":["id","status"],"type":"object"}}},"description":"Response"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Invalid request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Authentication required"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Access denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Not found"},"413":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Payload too large"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Unsupported media type"}},"security":[{"session":[]}],"summary":"release a package version","tags":["packages"],"x-pb-boundary":"project","x-pb-permission":"project:packages:manage","x-pb-session-only":true}},"/_pb/projects/{project}/packages/{package}/versions/{version}/tombstone":{"post":{"operationId":"tombstoneProjectPackageVersion","parameters":[{"in":"path","name":"project","required":true,"schema":{"pattern":"^[a-z0-9](?:[a-z0-9-]{0,62}[a-z0-9])?$","type":"string"}},{"in":"path","name":"package","required":true,"schema":{"pattern":"^[0-7][0-9A-HJKMNP-TV-Z]{25}$","type":"string"}},{"in":"path","name":"version","required":true,"schema":{"pattern":"^[0-7][0-9A-HJKMNP-TV-Z]{25}$","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"additionalProperties":false,"properties":{},"type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"additionalProperties":false,"properties":{"id":{"pattern":"^[0-7][0-9A-HJKMNP-TV-Z]{25}$","type":"string"},"status":{"enum":["active","removed_upstream","yanked","quarantined","tombstoned"],"type":"string"}},"required":["id","status"],"type":"object"}}},"description":"Response"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Invalid request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Authentication required"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Access denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Not found"},"413":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Payload too large"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Unsupported media type"}},"security":[{"session":[]}],"summary":"tombstone a package version","tags":["packages"],"x-pb-boundary":"project","x-pb-permission":"project:packages:manage","x-pb-session-only":true}},"/_pb/projects/{project}/permissions":{"get":{"operationId":"getMyProjectPermissions","parameters":[{"in":"path","name":"project","required":true,"schema":{"pattern":"^[a-z0-9](?:[a-z0-9-]{0,62}[a-z0-9])?$","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"additionalProperties":false,"properties":{"project":{"items":{"type":"string"},"type":"array"}},"required":["project"],"type":"object"}}},"description":"Response"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Invalid request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Authentication required"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Access denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Not found"}},"security":[{"session":[]},{"bearer":[]}],"summary":"Get caller project permissions","tags":["permissions"],"x-pb-boundary":"project","x-pb-permission":"project:read","x-pb-session-only":false}},"/_pb/projects/{project}/resolve":{"get":{"operationId":"resolveName","parameters":[{"in":"path","name":"project","required":true,"schema":{"pattern":"^[a-z0-9](?:[a-z0-9-]{0,62}[a-z0-9])?$","type":"string"}},{"in":"query","name":"name","required":true,"schema":{"maxLength":428,"minLength":1,"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"additionalProperties":false,"properties":{"candidates":{"items":{"additionalProperties":false,"properties":{"eligible":{"type":"boolean"},"projectLevel":{"type":"boolean"},"sourceId":{"pattern":"^[0-7][0-9A-HJKMNP-TV-Z]{25}$","type":"string"},"sourceName":{"type":"string"}},"required":["sourceId","sourceName","projectLevel","eligible"],"type":"object"},"type":"array"},"ecosystem":{"enum":["composer","npm"],"type":"string"},"name":{"type":"string"},"winner":{"anyOf":[{"pattern":"^[0-7][0-9A-HJKMNP-TV-Z]{25}$","type":"string"},{"type":"null"}]}},"required":["name","ecosystem","candidates","winner"],"type":"object"}}},"description":"Response"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Invalid request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Authentication required"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Access denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Not found"},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Service unavailable"}},"security":[{"session":[]},{"bearer":[]}],"summary":"Preview source resolution for a package name","tags":["sources"],"x-pb-boundary":"project","x-pb-permission":"project:sources:read","x-pb-session-only":false}},"/_pb/projects/{project}/restore":{"post":{"operationId":"restoreProject","parameters":[{"in":"path","name":"project","required":true,"schema":{"pattern":"^[a-z0-9](?:[a-z0-9-]{0,62}[a-z0-9])?$","type":"string"}},{"in":"header","name":"If-Match","required":true,"schema":{"pattern":"^\\"r([1-9][0-9]*)\\"$","type":"string"}}],"responses":{"204":{"description":"No content"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Invalid request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Authentication required"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Access denied; Reauthentication required"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Not found"},"412":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Precondition failed"},"428":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Precondition required"},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Service unavailable"}},"security":[{"session":[]}],"summary":"Restore a project","tags":["projects"],"x-pb-boundary":"organization","x-pb-permission":"org:projects:archive","x-pb-session-only":true}},"/_pb/projects/{project}/service-principals/{principal}/permissions":{"put":{"operationId":"setProjectServicePrincipalPermissions","parameters":[{"in":"path","name":"project","required":true,"schema":{"pattern":"^[a-z0-9](?:[a-z0-9-]{0,62}[a-z0-9])?$","type":"string"}},{"in":"path","name":"principal","required":true,"schema":{"pattern":"^[0-7][0-9A-HJKMNP-TV-Z]{25}$","type":"string"}},{"in":"header","name":"If-Match","required":true,"schema":{"pattern":"^\\"r([1-9][0-9]*)\\"$","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"additionalProperties":false,"properties":{"permissions":{"items":{"enum":["org:read","org:settings:write","org:users:read","org:users:write","org:roles:read","org:roles:write","org:grants:read","org:grants:write","org:projects:create","org:projects:archive","org:sources:read","org:sources:write","org:tokens:read","org:tokens:revoke","org:service-principals:write","org:packages:manage","org:import:write","org:import:approve","org:audit:read","project:read","project:settings:write","project:grants:read","project:grants:write","project:packages:read","project:packages:write","project:packages:manage","project:sources:read","project:sources:write","project:service-principals:write","project:tokens:create","project:tokens:read","project:tokens:revoke","project:audit:read"],"type":"string"},"type":"array"}},"required":["permissions"],"type":"object"}}},"required":true},"responses":{"204":{"description":"No content"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Invalid request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Authentication required"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Access denied; Reauthentication required"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Not found"},"412":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Precondition failed"},"413":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Payload too large"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Unsupported media type"},"428":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Precondition required"},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Service unavailable"}},"security":[{"session":[]}],"summary":"Set service principal permissions","tags":["service-principals"],"x-pb-boundary":"project","x-pb-permission":"project:service-principals:write","x-pb-session-only":true}},"/_pb/projects/{project}/service-principals/{principal}/restore":{"post":{"operationId":"restoreProjectServicePrincipal","parameters":[{"in":"path","name":"project","required":true,"schema":{"pattern":"^[a-z0-9](?:[a-z0-9-]{0,62}[a-z0-9])?$","type":"string"}},{"in":"path","name":"principal","required":true,"schema":{"pattern":"^[0-7][0-9A-HJKMNP-TV-Z]{25}$","type":"string"}},{"in":"header","name":"If-Match","required":true,"schema":{"pattern":"^\\"r([1-9][0-9]*)\\"$","type":"string"}}],"responses":{"204":{"description":"No content"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Invalid request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Authentication required"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Access denied; Reauthentication required"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Not found"},"412":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Precondition failed"},"428":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Precondition required"},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Service unavailable"}},"security":[{"session":[]}],"summary":"Restore service principal","tags":["service-principals"],"x-pb-boundary":"project","x-pb-permission":"project:service-principals:write","x-pb-session-only":true}},"/_pb/projects/{project}/service-principals/{principal}/suspend":{"post":{"operationId":"suspendProjectServicePrincipal","parameters":[{"in":"path","name":"project","required":true,"schema":{"pattern":"^[a-z0-9](?:[a-z0-9-]{0,62}[a-z0-9])?$","type":"string"}},{"in":"path","name":"principal","required":true,"schema":{"pattern":"^[0-7][0-9A-HJKMNP-TV-Z]{25}$","type":"string"}}],"responses":{"204":{"description":"No content"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Invalid request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Authentication required"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Access denied; Reauthentication required"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Not found"},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Service unavailable"}},"security":[{"session":[]}],"summary":"Suspend service principal","tags":["service-principals"],"x-pb-boundary":"project","x-pb-permission":"project:service-principals:write","x-pb-session-only":true}},"/_pb/projects/{project}/sources":{"get":{"operationId":"listProjectSources","parameters":[{"in":"path","name":"project","required":true,"schema":{"pattern":"^[a-z0-9](?:[a-z0-9-]{0,62}[a-z0-9])?$","type":"string"}},{"in":"query","name":"after","required":false,"schema":{"pattern":"^[0-7][0-9A-HJKMNP-TV-Z]{25}$","type":"string"}},{"in":"query","name":"limit","required":false,"schema":{"pattern":"^(?:[1-9][0-9]?|100)$","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"additionalProperties":false,"properties":{"items":{"items":{"anyOf":[{"additionalProperties":false,"properties":{"attached":{"const":true,"type":"boolean"},"config":{"anyOf":[{"additionalProperties":false,"properties":{"installationId":{"exclusiveMinimum":0,"maximum":9007199254740991,"type":"integer"},"packageName":{"type":"string"},"provider":{"enum":["github","git","ssh"],"type":"string"},"refs":{"additionalProperties":false,"properties":{"branches":{"items":{"type":"string"},"type":"array"},"tags":{"type":"boolean"}},"type":"object"},"repository":{"type":"string"}},"type":"object"},{"additionalProperties":false,"properties":{"distHosts":{"items":{"type":"string"},"type":"array"},"mirrorsFallback":{"type":"boolean"},"selection":{"additionalProperties":false,"properties":{"expandPatterns":{"type":"boolean"},"packages":{"items":{"type":"string"},"type":"array"},"patterns":{"items":{"type":"string"},"type":"array"}},"type":"object"}},"type":"object"},{"additionalProperties":false,"properties":{"distHosts":{"items":{"type":"string"},"type":"array"},"scopes":{"items":{"type":"string"},"type":"array"}},"type":"object"},{"additionalProperties":false,"properties":{"githubToken":{"type":"boolean"}},"type":"object"},{"additionalProperties":false,"properties":{},"type":"object"}]},"configComplete":{"type":"boolean"},"defaultVisibleToNewProjects":{"type":"boolean"},"ecosystem":{"enum":["composer","npm"],"type":"string"},"githubAuthentication":{"enum":["app","token"],"type":"string"},"hasCredential":{"type":"boolean"},"id":{"pattern":"^[0-7][0-9A-HJKMNP-TV-Z]{25}$","type":"string"},"lastError":{"type":["string","null"]},"lastPolledAt":{"type":["string","null"]},"lastRemovalRefusal":{"anyOf":[{"additionalProperties":false,"properties":{"absent":{"maximum":9007199254740991,"minimum":-9007199254740991,"type":"integer"},"at":{"type":"string"},"listed":{"maximum":9007199254740991,"minimum":-9007199254740991,"type":"integer"},"successful":{"maximum":9007199254740991,"minimum":-9007199254740991,"type":"integer"}},"required":["at","absent","listed","successful"],"type":"object"},{"type":"null"}]},"lastSuccessAt":{"type":["string","null"]},"name":{"type":"string"},"nextPollAt":{"type":["string","null"]},"pollIntervalSeconds":{"maximum":9007199254740991,"minimum":-9007199254740991,"type":"integer"},"precedence":{"maximum":9007199254740991,"minimum":-9007199254740991,"type":"integer"},"projectId":{"anyOf":[{"pattern":"^[0-7][0-9A-HJKMNP-TV-Z]{25}$","type":"string"},{"type":"null"}]},"removalAcceptanceArmed":{"type":"boolean"},"removalPolicy":{"enum":["flag","exclude"],"type":"string"},"retentionDaysOverride":{"anyOf":[{"maximum":9007199254740991,"minimum":0,"type":"integer"},{"type":"null"}]},"status":{"enum":["active","degraded","failing","paused"],"type":"string"},"sync":{"additionalProperties":false,"properties":{"completed":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"errors":{"items":{"additionalProperties":false,"properties":{"code":{"enum":["network","timeout","http_error","unauthorized","rate_limited","not_found","invalid_response","tag_limit_exceeded","mass_absence","too_large","policy_denied","credential_unavailable","internal"],"type":"string"},"count":{"exclusiveMinimum":0,"maximum":9007199254740991,"type":"integer"}},"required":["code","count"],"type":"object"},"type":"array"},"failed":{"description":"Terminal package failures.","maximum":9007199254740991,"minimum":0,"type":"integer"},"generation":{"type":"string"},"listing":{"type":"boolean"},"queued":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"retrying":{"description":"Failed packages queued for another attempt; disjoint from queued, running, failed and completed.","maximum":9007199254740991,"minimum":0,"type":"integer"},"running":{"maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["listing","generation","queued","running","retrying","failed","completed","errors"],"type":"object"},"type":{"enum":["vcs","composer_repository","npm_registry","packagist_proxy","npmjs_proxy","hosted"],"type":"string"},"url":{"type":["string","null"]},"userAgent":{"type":["string","null"]}},"required":["id","projectId","name","ecosystem","type","url","status","removalPolicy","pollIntervalSeconds","lastSuccessAt","lastError","lastPolledAt","nextPollAt","hasCredential","lastRemovalRefusal","removalAcceptanceArmed","attached","precedence"],"type":"object"},{"additionalProperties":false,"properties":{"attached":{"const":false,"type":"boolean"},"config":{"anyOf":[{"additionalProperties":false,"properties":{"installationId":{"exclusiveMinimum":0,"maximum":9007199254740991,"type":"integer"},"packageName":{"type":"string"},"provider":{"enum":["github","git","ssh"],"type":"string"},"refs":{"additionalProperties":false,"properties":{"branches":{"items":{"type":"string"},"type":"array"},"tags":{"type":"boolean"}},"type":"object"},"repository":{"type":"string"}},"type":"object"},{"additionalProperties":false,"properties":{"distHosts":{"items":{"type":"string"},"type":"array"},"mirrorsFallback":{"type":"boolean"},"selection":{"additionalProperties":false,"properties":{"expandPatterns":{"type":"boolean"},"packages":{"items":{"type":"string"},"type":"array"},"patterns":{"items":{"type":"string"},"type":"array"}},"type":"object"}},"type":"object"},{"additionalProperties":false,"properties":{"distHosts":{"items":{"type":"string"},"type":"array"},"scopes":{"items":{"type":"string"},"type":"array"}},"type":"object"},{"additionalProperties":false,"properties":{"githubToken":{"type":"boolean"}},"type":"object"},{"additionalProperties":false,"properties":{},"type":"object"}]},"configComplete":{"type":"boolean"},"defaultVisibleToNewProjects":{"type":"boolean"},"ecosystem":{"enum":["composer","npm"],"type":"string"},"githubAuthentication":{"enum":["app","token"],"type":"string"},"hasCredential":{"type":"boolean"},"id":{"pattern":"^[0-7][0-9A-HJKMNP-TV-Z]{25}$","type":"string"},"lastError":{"type":["string","null"]},"lastPolledAt":{"type":["string","null"]},"lastRemovalRefusal":{"anyOf":[{"additionalProperties":false,"properties":{"absent":{"maximum":9007199254740991,"minimum":-9007199254740991,"type":"integer"},"at":{"type":"string"},"listed":{"maximum":9007199254740991,"minimum":-9007199254740991,"type":"integer"},"successful":{"maximum":9007199254740991,"minimum":-9007199254740991,"type":"integer"}},"required":["at","absent","listed","successful"],"type":"object"},{"type":"null"}]},"lastSuccessAt":{"type":["string","null"]},"name":{"type":"string"},"nextPollAt":{"type":["string","null"]},"pollIntervalSeconds":{"maximum":9007199254740991,"minimum":-9007199254740991,"type":"integer"},"projectId":{"anyOf":[{"pattern":"^[0-7][0-9A-HJKMNP-TV-Z]{25}$","type":"string"},{"type":"null"}]},"removalAcceptanceArmed":{"type":"boolean"},"removalPolicy":{"enum":["flag","exclude"],"type":"string"},"retentionDaysOverride":{"anyOf":[{"maximum":9007199254740991,"minimum":0,"type":"integer"},{"type":"null"}]},"status":{"enum":["active","degraded","failing","paused"],"type":"string"},"sync":{"additionalProperties":false,"properties":{"completed":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"errors":{"items":{"additionalProperties":false,"properties":{"code":{"enum":["network","timeout","http_error","unauthorized","rate_limited","not_found","invalid_response","tag_limit_exceeded","mass_absence","too_large","policy_denied","credential_unavailable","internal"],"type":"string"},"count":{"exclusiveMinimum":0,"maximum":9007199254740991,"type":"integer"}},"required":["code","count"],"type":"object"},"type":"array"},"failed":{"description":"Terminal package failures.","maximum":9007199254740991,"minimum":0,"type":"integer"},"generation":{"type":"string"},"listing":{"type":"boolean"},"queued":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"retrying":{"description":"Failed packages queued for another attempt; disjoint from queued, running, failed and completed.","maximum":9007199254740991,"minimum":0,"type":"integer"},"running":{"maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["listing","generation","queued","running","retrying","failed","completed","errors"],"type":"object"},"type":{"enum":["vcs","composer_repository","npm_registry","packagist_proxy","npmjs_proxy","hosted"],"type":"string"},"url":{"type":["string","null"]},"userAgent":{"type":["string","null"]}},"required":["id","projectId","name","ecosystem","type","url","status","removalPolicy","pollIntervalSeconds","lastSuccessAt","lastError","lastPolledAt","nextPollAt","hasCredential","lastRemovalRefusal","removalAcceptanceArmed","attached"],"type":"object"}]},"type":"array"},"next":{"anyOf":[{"pattern":"^[0-7][0-9A-HJKMNP-TV-Z]{25}$","type":"string"},{"type":"null"}]},"vcsProviders":{"items":{"enum":["github","git","ssh"],"type":"string"},"type":"array"}},"required":["items","next","vcsProviders"],"type":"object"}}},"description":"Response"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Invalid request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Authentication required"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Access denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Not found"},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Service unavailable"}},"security":[{"session":[]},{"bearer":[]}],"summary":"List sources","tags":["sources"],"x-pb-boundary":"project","x-pb-permission":"project:sources:read","x-pb-session-only":false},"post":{"operationId":"createProjectSource","parameters":[{"in":"path","name":"project","required":true,"schema":{"pattern":"^[a-z0-9](?:[a-z0-9-]{0,62}[a-z0-9])?$","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"additionalProperties":false,"properties":{"config":{"anyOf":[{"additionalProperties":false,"properties":{"installationId":{"exclusiveMinimum":0,"maximum":9007199254740991,"type":"integer"},"packageName":{"type":"string"},"provider":{"enum":["github","git","ssh"],"type":"string"},"refs":{"additionalProperties":false,"properties":{"branches":{"items":{"type":"string"},"type":"array"},"tags":{"type":"boolean"}},"type":"object"},"repository":{"type":"string"}},"required":["provider","repository"],"type":"object"},{"additionalProperties":false,"properties":{"distHosts":{"items":{"type":"string"},"type":"array"},"mirrorsFallback":{"type":"boolean"},"selection":{"additionalProperties":false,"properties":{"expandPatterns":{"type":"boolean"},"packages":{"items":{"type":"string"},"type":"array"},"patterns":{"items":{"type":"string"},"type":"array"}},"type":"object"}},"type":"object"},{"additionalProperties":false,"properties":{"distHosts":{"items":{"type":"string"},"type":"array"},"scopes":{"items":{"type":"string"},"type":"array"}},"type":"object"},{"additionalProperties":false,"properties":{"githubToken":{"type":"boolean"}},"type":"object"},{"additionalProperties":false,"properties":{},"type":"object"}]},"defaultVisibleToNewProjects":{"type":"boolean"},"ecosystem":{"enum":["composer","npm"],"type":"string"},"name":{"minLength":1,"type":"string"},"pollIntervalSeconds":{"exclusiveMinimum":0,"maximum":9007199254740991,"type":"integer"},"removalPolicy":{"enum":["flag","exclude"],"type":"string"},"retentionDaysOverride":{"anyOf":[{"maximum":9007199254740991,"minimum":0,"type":"integer"},{"type":"null"}]},"type":{"enum":["vcs","composer_repository","npm_registry","packagist_proxy","npmjs_proxy","hosted"],"type":"string"},"url":{"anyOf":[{"maxLength":2048,"type":"string"},{"type":"null"}]},"userAgent":{"type":["string","null"]}},"required":["name","ecosystem","type"],"type":"object"}}},"required":true},"responses":{"201":{"content":{"application/json":{"schema":{"additionalProperties":false,"properties":{"id":{"pattern":"^[0-7][0-9A-HJKMNP-TV-Z]{25}$","type":"string"}},"required":["id"],"type":"object"}}},"description":"Response"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Invalid request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Authentication required"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Access denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Not found"},"413":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Payload too large"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Unsupported media type"},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Service unavailable"}},"security":[{"session":[]}],"summary":"Add a source","tags":["sources"],"x-pb-boundary":"project","x-pb-permission":"project:sources:write","x-pb-session-only":true}},"/_pb/projects/{project}/sources/order":{"put":{"operationId":"setSourceOrder","parameters":[{"in":"path","name":"project","required":true,"schema":{"pattern":"^[a-z0-9](?:[a-z0-9-]{0,62}[a-z0-9])?$","type":"string"}},{"in":"header","name":"If-Match","required":true,"schema":{"pattern":"^\\"r([1-9][0-9]*)\\"$","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"additionalProperties":false,"properties":{"sourceIds":{"items":{"pattern":"^[0-7][0-9A-HJKMNP-TV-Z]{25}$","type":"string"},"minItems":1,"type":"array"}},"required":["sourceIds"],"type":"object"}}},"required":true},"responses":{"204":{"description":"No content"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Invalid request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Authentication required"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Access denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Not found"},"412":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Precondition failed"},"413":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Payload too large"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Unsupported media type"},"428":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Precondition required"},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Service unavailable"}},"security":[{"session":[]}],"summary":"Order all attached sources","tags":["sources"],"x-pb-boundary":"project","x-pb-permission":"project:sources:write","x-pb-session-only":true}},"/_pb/projects/{project}/sources/{source}":{"patch":{"operationId":"updateProjectSource","parameters":[{"in":"path","name":"project","required":true,"schema":{"pattern":"^[a-z0-9](?:[a-z0-9-]{0,62}[a-z0-9])?$","type":"string"}},{"in":"path","name":"source","required":true,"schema":{"pattern":"^[0-7][0-9A-HJKMNP-TV-Z]{25}$","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"additionalProperties":false,"properties":{"config":{"anyOf":[{"additionalProperties":false,"properties":{"installationId":{"exclusiveMinimum":0,"maximum":9007199254740991,"type":"integer"},"packageName":{"type":"string"},"provider":{"enum":["github","git","ssh"],"type":"string"},"refs":{"additionalProperties":false,"properties":{"branches":{"items":{"type":"string"},"type":"array"},"tags":{"type":"boolean"}},"type":"object"},"repository":{"type":"string"}},"required":["provider","repository"],"type":"object"},{"additionalProperties":false,"properties":{"distHosts":{"items":{"type":"string"},"type":"array"},"mirrorsFallback":{"type":"boolean"},"selection":{"additionalProperties":false,"properties":{"expandPatterns":{"type":"boolean"},"packages":{"items":{"type":"string"},"type":"array"},"patterns":{"items":{"type":"string"},"type":"array"}},"type":"object"}},"type":"object"},{"additionalProperties":false,"properties":{"distHosts":{"items":{"type":"string"},"type":"array"},"scopes":{"items":{"type":"string"},"type":"array"}},"type":"object"},{"additionalProperties":false,"properties":{"githubToken":{"type":"boolean"}},"type":"object"},{"additionalProperties":false,"properties":{},"type":"object"}]},"defaultVisibleToNewProjects":{"type":"boolean"},"pollIntervalSeconds":{"exclusiveMinimum":0,"maximum":9007199254740991,"type":"integer"},"removalPolicy":{"enum":["flag","exclude"],"type":"string"},"retentionDaysOverride":{"anyOf":[{"maximum":9007199254740991,"minimum":0,"type":"integer"},{"type":"null"}]},"url":{"anyOf":[{"maxLength":2048,"type":"string"},{"type":"null"}]},"userAgent":{"type":["string","null"]}},"type":"object"}}},"required":true},"responses":{"204":{"description":"No content"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Invalid request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Authentication required"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Access denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Not found"},"413":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Payload too large"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Unsupported media type"},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Service unavailable"}},"security":[{"session":[]}],"summary":"Change source settings","tags":["sources"],"x-pb-boundary":"project","x-pb-permission":"project:sources:write","x-pb-session-only":true}},"/_pb/projects/{project}/sources/{source}/attachment":{"delete":{"operationId":"detachSource","parameters":[{"in":"path","name":"project","required":true,"schema":{"pattern":"^[a-z0-9](?:[a-z0-9-]{0,62}[a-z0-9])?$","type":"string"}},{"in":"path","name":"source","required":true,"schema":{"pattern":"^[0-7][0-9A-HJKMNP-TV-Z]{25}$","type":"string"}}],"responses":{"204":{"description":"No content"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Invalid request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Authentication required"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Access denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Not found"},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Service unavailable"}},"security":[{"session":[]}],"summary":"Detach a source from a project","tags":["sources"],"x-pb-boundary":"project","x-pb-permission":"project:sources:write","x-pb-session-only":true},"put":{"operationId":"attachSource","parameters":[{"in":"path","name":"project","required":true,"schema":{"pattern":"^[a-z0-9](?:[a-z0-9-]{0,62}[a-z0-9])?$","type":"string"}},{"in":"path","name":"source","required":true,"schema":{"pattern":"^[0-7][0-9A-HJKMNP-TV-Z]{25}$","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"additionalProperties":false,"properties":{"precedence":{"maximum":10000,"minimum":0,"type":"integer"}},"type":"object"}}},"required":true},"responses":{"204":{"description":"No content"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Invalid request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Authentication required"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Access denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Not found"},"413":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Payload too large"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Unsupported media type"},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Service unavailable"}},"security":[{"session":[]}],"summary":"Attach a source to a project","tags":["sources"],"x-pb-boundary":"project","x-pb-permission":"project:sources:write","x-pb-session-only":true}},"/_pb/projects/{project}/sources/{source}/credential":{"put":{"operationId":"writeProjectSourceCredential","parameters":[{"in":"path","name":"project","required":true,"schema":{"pattern":"^[a-z0-9](?:[a-z0-9-]{0,62}[a-z0-9])?$","type":"string"}},{"in":"path","name":"source","required":true,"schema":{"pattern":"^[0-7][0-9A-HJKMNP-TV-Z]{25}$","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"additionalProperties":false,"properties":{"kind":{"enum":["http_basic","bearer","header","query","github_app","npm_token","ssh_key"],"type":"string"},"material":{"maxLength":16384,"type":"string"}},"required":["kind","material"],"type":"object"}}},"required":true},"responses":{"204":{"description":"No content"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Invalid request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Authentication required"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Access denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Not found"},"413":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Payload too large"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Unsupported media type"},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Service unavailable"}},"security":[{"session":[]}],"summary":"Replace a source credential after reauthentication","tags":["sources"],"x-pb-boundary":"project","x-pb-permission":"project:sources:write","x-pb-session-only":true}},"/_pb/projects/{project}/sources/{source}/packages":{"post":{"operationId":"addProjectSourcePackage","parameters":[{"in":"path","name":"project","required":true,"schema":{"pattern":"^[a-z0-9](?:[a-z0-9-]{0,62}[a-z0-9])?$","type":"string"}},{"in":"path","name":"source","required":true,"schema":{"pattern":"^[0-7][0-9A-HJKMNP-TV-Z]{25}$","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"additionalProperties":false,"properties":{"name":{"maxLength":428,"minLength":1,"type":"string"}},"required":["name"],"type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"additionalProperties":false,"properties":{"name":{"type":"string"},"state":{"const":"present","type":"string"}},"required":["name","state"],"type":"object"}}},"description":"Response"},"202":{"content":{"application/json":{"schema":{"additionalProperties":false,"properties":{"jobId":{"type":"string"},"name":{"type":"string"},"state":{"const":"queued","type":"string"}},"required":["name","state","jobId"],"type":"object"}}},"description":"Response"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Invalid request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Authentication required"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Access denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Conflict; Source is paused; Already exists; Last holder cannot be removed; Idempotency key does not match; Already issued; Approval required"},"413":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Payload too large"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Unsupported media type"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Upstream request refused; Bad gateway"},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Service unavailable"}},"security":[{"session":[]}],"summary":"Request a package with project:sources:write from a project or organization proxy attached to the project","tags":["sources"],"x-pb-boundary":"project","x-pb-permission":"project:sources:write","x-pb-session-only":true}},"/_pb/projects/{project}/sources/{source}/pause":{"post":{"operationId":"pauseProjectSource","parameters":[{"in":"path","name":"project","required":true,"schema":{"pattern":"^[a-z0-9](?:[a-z0-9-]{0,62}[a-z0-9])?$","type":"string"}},{"in":"path","name":"source","required":true,"schema":{"pattern":"^[0-7][0-9A-HJKMNP-TV-Z]{25}$","type":"string"}}],"responses":{"204":{"description":"No content"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Invalid request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Authentication required"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Access denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Not found"},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Service unavailable"}},"security":[{"session":[]}],"summary":"Pause a source","tags":["sources"],"x-pb-boundary":"project","x-pb-permission":"project:sources:write","x-pb-session-only":true}},"/_pb/projects/{project}/sources/{source}/resume":{"post":{"operationId":"resumeProjectSource","parameters":[{"in":"path","name":"project","required":true,"schema":{"pattern":"^[a-z0-9](?:[a-z0-9-]{0,62}[a-z0-9])?$","type":"string"}},{"in":"path","name":"source","required":true,"schema":{"pattern":"^[0-7][0-9A-HJKMNP-TV-Z]{25}$","type":"string"}}],"responses":{"204":{"description":"No content"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Invalid request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Authentication required"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Access denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Not found"},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Service unavailable"}},"security":[{"session":[]}],"summary":"Resume a proxy source","tags":["sources"],"x-pb-boundary":"project","x-pb-permission":"project:sources:write","x-pb-session-only":true}},"/_pb/projects/{project}/sources/{source}/sync":{"post":{"operationId":"syncProjectSource","parameters":[{"in":"path","name":"project","required":true,"schema":{"pattern":"^[a-z0-9](?:[a-z0-9-]{0,62}[a-z0-9])?$","type":"string"}},{"in":"path","name":"source","required":true,"schema":{"pattern":"^[0-7][0-9A-HJKMNP-TV-Z]{25}$","type":"string"}}],"responses":{"202":{"description":"No content"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Invalid request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Authentication required"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Access denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Conflict; Source is paused; Already exists; Last holder cannot be removed; Idempotency key does not match; Already issued; Approval required"},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Service unavailable"}},"security":[{"session":[]}],"summary":"Request a source sync","tags":["sources"],"x-pb-boundary":"project","x-pb-permission":"project:sources:write","x-pb-session-only":true}},"/_pb/projects/{project}/tokens":{"get":{"operationId":"listProjectTokens","parameters":[{"in":"path","name":"project","required":true,"schema":{"pattern":"^[a-z0-9](?:[a-z0-9-]{0,62}[a-z0-9])?$","type":"string"}},{"in":"query","name":"after","required":false,"schema":{"pattern":"^[0-7][0-9A-HJKMNP-TV-Z]{25}$","type":"string"}},{"in":"query","name":"limit","required":false,"schema":{"pattern":"^(?:[1-9][0-9]?|100)$","type":"string"}},{"in":"query","name":"status","required":false,"schema":{"enum":["active","expired","revoked"],"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"additionalProperties":false,"properties":{"items":{"items":{"additionalProperties":false,"properties":{"createdAt":{"type":"string"},"createdByUserId":{"type":["string","null"]},"expiresAt":{"type":["string","null"]},"id":{"type":"string"},"kind":{"enum":["pat","svc"],"type":"string"},"lastUsedAt":{"type":["string","null"]},"name":{"type":"string"},"projectCount":{"maximum":9007199254740991,"minimum":-9007199254740991,"type":"integer"},"projectId":{"type":["string","null"]},"projectMode":{"anyOf":[{"enum":["all","selected"],"type":"string"},{"type":"null"}]},"readOnly":{"type":"boolean"},"revokedAt":{"type":["string","null"]},"scope":{"enum":["read","write","full"],"type":"string"},"servicePrincipalId":{"type":["string","null"]},"status":{"enum":["active","expired","revoked"],"type":"string"},"userId":{"type":["string","null"]}},"required":["id","kind","name","scope","readOnly","status","projectMode","projectCount","projectId","userId","createdByUserId","servicePrincipalId","createdAt","expiresAt","lastUsedAt","revokedAt"],"type":"object"},"type":"array"},"lifetime":{"additionalProperties":false,"properties":{"personal":{"additionalProperties":false,"properties":{"defaultDays":{"maximum":9007199254740991,"minimum":-9007199254740991,"type":"integer"},"maxDays":{"maximum":9007199254740991,"minimum":-9007199254740991,"type":"integer"}},"required":["maxDays","defaultDays"],"type":"object"},"service":{"additionalProperties":false,"properties":{"defaultDays":{"maximum":9007199254740991,"minimum":-9007199254740991,"type":"integer"},"maxDays":{"maximum":9007199254740991,"minimum":-9007199254740991,"type":"integer"}},"required":["maxDays","defaultDays"],"type":"object"}},"required":["personal","service"],"type":"object"},"next":{"type":["string","null"]}},"required":["items","next","lifetime"],"type":"object"}}},"description":"Response"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Invalid request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Authentication required"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Access denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Not found"}},"security":[{"session":[]}],"summary":"List project tokens","tags":["tokens"],"x-pb-boundary":"project","x-pb-permission":"project:tokens:read","x-pb-session-only":true},"post":{"operationId":"createProjectToken","parameters":[{"in":"path","name":"project","required":true,"schema":{"pattern":"^[a-z0-9](?:[a-z0-9-]{0,62}[a-z0-9])?$","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"additionalProperties":false,"properties":{"expiresAt":{"type":"string"},"lifetimeDays":{"maximum":9007199254740991,"minimum":-9007199254740991,"type":"integer"},"name":{"type":"string"},"readOnly":{"type":"boolean"},"scope":{"enum":["read","write","full"],"type":"string"},"servicePrincipalId":{"pattern":"^[0-7][0-9A-HJKMNP-TV-Z]{25}$","type":"string"}},"required":["servicePrincipalId","name","scope"],"type":"object"}}},"required":true},"responses":{"201":{"content":{"application/json":{"schema":{"additionalProperties":false,"properties":{"id":{"type":"string"},"token":{"type":"string"}},"required":["id","token"],"type":"object"}}},"description":"Response"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Invalid request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Authentication required"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Access denied; Reauthentication required"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Not found"},"413":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Payload too large"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Unsupported media type"},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Service unavailable"}},"security":[{"session":[]}],"summary":"Issue a project service token","tags":["tokens"],"x-pb-boundary":"project","x-pb-permission":"project:tokens:create","x-pb-session-only":true}},"/_pb/projects/{project}/tokens/{token}":{"delete":{"operationId":"revokeProjectToken","parameters":[{"in":"path","name":"project","required":true,"schema":{"pattern":"^[a-z0-9](?:[a-z0-9-]{0,62}[a-z0-9])?$","type":"string"}},{"in":"path","name":"token","required":true,"schema":{"pattern":"^[0-7][0-9A-HJKMNP-TV-Z]{25}$","type":"string"}}],"responses":{"204":{"description":"No content"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Invalid request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Authentication required"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Access denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Not found"},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Service unavailable"}},"security":[{"session":[]}],"summary":"Revoke a project token","tags":["tokens"],"x-pb-boundary":"project","x-pb-permission":"project:tokens:revoke","x-pb-session-only":true},"get":{"operationId":"getProjectToken","parameters":[{"in":"path","name":"project","required":true,"schema":{"pattern":"^[a-z0-9](?:[a-z0-9-]{0,62}[a-z0-9])?$","type":"string"}},{"in":"path","name":"token","required":true,"schema":{"pattern":"^[0-7][0-9A-HJKMNP-TV-Z]{25}$","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"additionalProperties":false,"properties":{"createdAt":{"type":"string"},"createdByUserId":{"type":["string","null"]},"expiresAt":{"type":["string","null"]},"id":{"type":"string"},"kind":{"enum":["pat","svc"],"type":"string"},"lastUsedAt":{"type":["string","null"]},"name":{"type":"string"},"projectCount":{"maximum":9007199254740991,"minimum":-9007199254740991,"type":"integer"},"projectId":{"type":["string","null"]},"projectMode":{"anyOf":[{"enum":["all","selected"],"type":"string"},{"type":"null"}]},"readOnly":{"type":"boolean"},"revokedAt":{"type":["string","null"]},"scope":{"enum":["read","write","full"],"type":"string"},"servicePrincipalId":{"type":["string","null"]},"status":{"enum":["active","expired","revoked"],"type":"string"},"userId":{"type":["string","null"]}},"required":["id","kind","name","scope","readOnly","status","projectMode","projectCount","projectId","userId","createdByUserId","servicePrincipalId","createdAt","expiresAt","lastUsedAt","revokedAt"],"type":"object"}}},"description":"Response"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Invalid request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Authentication required"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Access denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Not found"}},"security":[{"session":[]}],"summary":"Get a project token","tags":["tokens"],"x-pb-boundary":"project","x-pb-permission":"project:tokens:read","x-pb-session-only":true}},"/_pb/projects/{project}/tokens/{token}/rotate":{"post":{"operationId":"rotateProjectToken","parameters":[{"in":"path","name":"project","required":true,"schema":{"pattern":"^[a-z0-9](?:[a-z0-9-]{0,62}[a-z0-9])?$","type":"string"}},{"in":"path","name":"token","required":true,"schema":{"pattern":"^[0-7][0-9A-HJKMNP-TV-Z]{25}$","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"additionalProperties":false,"properties":{"expiresAt":{"type":"string"},"lifetimeDays":{"maximum":9007199254740991,"minimum":-9007199254740991,"type":"integer"},"name":{"type":"string"},"overlapDays":{"anyOf":[{"const":0,"type":"number"},{"const":1,"type":"number"},{"const":7,"type":"number"}]}},"required":["overlapDays"],"type":"object"}}},"required":true},"responses":{"201":{"content":{"application/json":{"schema":{"additionalProperties":false,"properties":{"id":{"type":"string"},"replacedExpiresAt":{"type":"string"},"replacedTokenId":{"type":"string"},"token":{"type":"string"}},"required":["id","token","replacedTokenId","replacedExpiresAt"],"type":"object"}}},"description":"Response"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Invalid request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Authentication required"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Access denied; Reauthentication required"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Conflict; Source is paused; Already exists; Last holder cannot be removed; Idempotency key does not match; Already issued; Approval required"},"413":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Payload too large"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Error"},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Service unavailable"}},"security":[{"session":[]}],"summary":"Rotate a project service token","tags":["tokens"],"x-pb-boundary":"project","x-pb-permission":"project:tokens:create","x-pb-session-only":true}},"/_pb/roles":{"get":{"operationId":"listRoles","parameters":[{"in":"query","name":"after","required":false,"schema":{"pattern":"^[0-7][0-9A-HJKMNP-TV-Z]{25}$","type":"string"}},{"in":"query","name":"limit","required":false,"schema":{"pattern":"^([1-9][0-9]?|100)$","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"additionalProperties":false,"properties":{"items":{"items":{"additionalProperties":false,"properties":{"id":{"type":"string"},"isSystem":{"type":"boolean"},"key":{"type":"string"},"name":{"type":"string"},"permissions":{"items":{"type":"string"},"type":"array"},"protectsLastHolder":{"type":"boolean"},"revision":{"maximum":9007199254740991,"minimum":-9007199254740991,"type":"integer"},"scope":{"enum":["organization","project"],"type":"string"}},"required":["id","key","name","scope","isSystem","protectsLastHolder","revision","permissions"],"type":"object"},"type":"array"},"next":{"type":["string","null"]}},"required":["items","next"],"type":"object"}}},"description":"Response"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Invalid request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Authentication required"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Access denied"},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Service unavailable"}},"security":[{"session":[]},{"bearer":[]}],"summary":"List roles","tags":["roles"],"x-pb-boundary":"organization","x-pb-permission":"org:roles:read","x-pb-session-only":false},"post":{"operationId":"createRole","requestBody":{"content":{"application/json":{"schema":{"additionalProperties":false,"properties":{"key":{"pattern":"^[a-z][a-z0-9_]{0,63}$","type":"string"},"name":{"maxLength":200,"minLength":1,"type":"string"},"permissions":{"items":{"maxLength":100,"type":"string"},"maxItems":200,"type":"array"},"scope":{"enum":["organization","project"],"type":"string"}},"required":["key","name","scope","permissions"],"type":"object"}}},"required":true},"responses":{"201":{"content":{"application/json":{"schema":{"additionalProperties":false,"properties":{"id":{"pattern":"^[0-7][0-9A-HJKMNP-TV-Z]{25}$","type":"string"}},"required":["id"],"type":"object"}}},"description":"Response"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Invalid request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Authentication required"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Access denied"},"413":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Payload too large"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Unsupported media type"},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Service unavailable"}},"security":[{"session":[]}],"summary":"Add a role","tags":["roles"],"x-pb-boundary":"organization","x-pb-permission":"org:roles:write","x-pb-session-only":true}},"/_pb/roles/{role}":{"delete":{"operationId":"deleteRole","parameters":[{"in":"path","name":"role","required":true,"schema":{"pattern":"^[0-7][0-9A-HJKMNP-TV-Z]{25}$","type":"string"}},{"in":"header","name":"If-Match","required":true,"schema":{"pattern":"^\\"r([1-9][0-9]*)\\"$","type":"string"}}],"responses":{"204":{"description":"No content"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Invalid request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Authentication required"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Access denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Not found"},"412":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Precondition failed"},"428":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Precondition required"},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Service unavailable"}},"security":[{"session":[]}],"summary":"Remove a role","tags":["roles"],"x-pb-boundary":"organization","x-pb-permission":"org:roles:write","x-pb-session-only":true},"patch":{"operationId":"updateRole","parameters":[{"in":"path","name":"role","required":true,"schema":{"pattern":"^[0-7][0-9A-HJKMNP-TV-Z]{25}$","type":"string"}},{"in":"header","name":"If-Match","required":true,"schema":{"pattern":"^\\"r([1-9][0-9]*)\\"$","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"anyOf":[{"additionalProperties":false,"properties":{"name":{"maxLength":200,"minLength":1,"type":"string"}},"required":["name"],"type":"object"},{"additionalProperties":false,"properties":{"permissions":{"items":{"maxLength":100,"type":"string"},"maxItems":200,"type":"array"}},"required":["permissions"],"type":"object"}]}}},"required":true},"responses":{"204":{"description":"No content"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Invalid request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Authentication required"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Access denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Not found"},"412":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Precondition failed"},"413":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Payload too large"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Unsupported media type"},"428":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Precondition required"},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Service unavailable"}},"security":[{"session":[]}],"summary":"Rename a role or replace its permissions","tags":["roles"],"x-pb-boundary":"organization","x-pb-permission":"org:roles:write","x-pb-session-only":true}},"/_pb/service-principals":{"get":{"operationId":"listServicePrincipals","parameters":[{"in":"query","name":"after","required":false,"schema":{"pattern":"^[0-7][0-9A-HJKMNP-TV-Z]{25}$","type":"string"}},{"in":"query","name":"limit","required":false,"schema":{"pattern":"^([1-9][0-9]?|100)$","type":"string"}},{"in":"query","name":"project","required":false,"schema":{"pattern":"^[0-7][0-9A-HJKMNP-TV-Z]{25}$","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"additionalProperties":false,"properties":{"items":{"items":{"additionalProperties":false,"properties":{"createdByUserId":{"type":"string"},"id":{"pattern":"^[0-7][0-9A-HJKMNP-TV-Z]{25}$","type":"string"},"name":{"type":"string"},"permissions":{"items":{"type":"string"},"type":"array"},"projectId":{"anyOf":[{"pattern":"^[0-7][0-9A-HJKMNP-TV-Z]{25}$","type":"string"},{"type":"null"}]},"revision":{"maximum":9007199254740991,"minimum":1,"type":"integer"},"status":{"enum":["active","suspended"],"type":"string"}},"required":["id","name","projectId","createdByUserId","status","revision","permissions"],"type":"object"},"type":"array"},"next":{"anyOf":[{"pattern":"^[0-7][0-9A-HJKMNP-TV-Z]{25}$","type":"string"},{"type":"null"}]}},"required":["items","next"],"type":"object"}}},"description":"Response"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Invalid request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Authentication required"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Access denied; Reauthentication required"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Package not found; Not found"},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Service unavailable"}},"security":[{"session":[]}],"summary":"List service principals","tags":["service-principals"],"x-pb-boundary":"organization","x-pb-permission":"org:service-principals:write","x-pb-session-only":true},"post":{"operationId":"createServicePrincipal","requestBody":{"content":{"application/json":{"schema":{"additionalProperties":false,"properties":{"name":{"pattern":"^(?![\\\\s\\\\S]*(?:[\\\\u0000-\\\\u001f\\\\u007f-\\\\u009f\\\\u00ad\\\\u0600-\\\\u0605\\\\u061c\\\\u06dd\\\\u070f\\\\u0890-\\\\u0891\\\\u08e2\\\\u180e\\\\u200b-\\\\u200f\\\\u2028-\\\\u202e\\\\u2060-\\\\u2064\\\\u2066-\\\\u206f\\\\ufeff\\\\ufff9-\\\\ufffb]|\\\\ud804[\\\\udcbd\\\\udccd]|\\\\ud80d[\\\\udc30-\\\\udc3f]|\\\\ud82f[\\\\udca0-\\\\udca3]|\\\\ud834[\\\\udd73-\\\\udd7a]|\\\\udb40[\\\\udc01\\\\udc20-\\\\udc7f]))(?:[\\\\ud800-\\\\udbff][\\\\udc00-\\\\udfff]|[^\\\\ud800-\\\\udfff]){1,100}(?![\\\\s\\\\S])","type":"string"},"permissions":{"items":{"enum":["org:read","org:settings:write","org:users:read","org:users:write","org:roles:read","org:roles:write","org:grants:read","org:grants:write","org:projects:create","org:projects:archive","org:sources:read","org:sources:write","org:tokens:read","org:tokens:revoke","org:service-principals:write","org:packages:manage","org:import:write","org:import:approve","org:audit:read","project:read","project:settings:write","project:grants:read","project:grants:write","project:packages:read","project:packages:write","project:packages:manage","project:sources:read","project:sources:write","project:service-principals:write","project:tokens:create","project:tokens:read","project:tokens:revoke","project:audit:read"],"type":"string"},"type":"array"},"project":{"pattern":"^[0-7][0-9A-HJKMNP-TV-Z]{25}$","type":"string"}},"required":["name","permissions"],"type":"object"}}},"required":true},"responses":{"201":{"content":{"application/json":{"schema":{"additionalProperties":false,"properties":{"createdByUserId":{"type":"string"},"id":{"pattern":"^[0-7][0-9A-HJKMNP-TV-Z]{25}$","type":"string"},"name":{"type":"string"},"permissions":{"items":{"type":"string"},"type":"array"},"projectId":{"anyOf":[{"pattern":"^[0-7][0-9A-HJKMNP-TV-Z]{25}$","type":"string"},{"type":"null"}]},"revision":{"maximum":9007199254740991,"minimum":1,"type":"integer"},"status":{"enum":["active","suspended"],"type":"string"}},"required":["id","name","projectId","createdByUserId","status","revision","permissions"],"type":"object"}}},"description":"Response"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Invalid request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Authentication required"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Access denied; Reauthentication required"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Package not found; Not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Conflict; Source is paused; Already exists; Last holder cannot be removed; Idempotency key does not match; Already issued; Approval required"},"413":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Payload too large"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Unsupported media type"},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Service unavailable"}},"security":[{"session":[]}],"summary":"Add a service principal; requires Idempotency-Key and returns ETag","tags":["service-principals"],"x-pb-boundary":"organization","x-pb-permission":"org:service-principals:write","x-pb-session-only":true}},"/_pb/service-principals/{principal}":{"get":{"operationId":"getServicePrincipal","parameters":[{"in":"path","name":"principal","required":true,"schema":{"pattern":"^[0-7][0-9A-HJKMNP-TV-Z]{25}$","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"additionalProperties":false,"properties":{"createdByUserId":{"type":"string"},"id":{"pattern":"^[0-7][0-9A-HJKMNP-TV-Z]{25}$","type":"string"},"name":{"type":"string"},"permissions":{"items":{"type":"string"},"type":"array"},"projectId":{"anyOf":[{"pattern":"^[0-7][0-9A-HJKMNP-TV-Z]{25}$","type":"string"},{"type":"null"}]},"revision":{"maximum":9007199254740991,"minimum":1,"type":"integer"},"status":{"enum":["active","suspended"],"type":"string"}},"required":["id","name","projectId","createdByUserId","status","revision","permissions"],"type":"object"}}},"description":"Response"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Invalid request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Authentication required"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Access denied; Reauthentication required"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Not found"},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Service unavailable"}},"security":[{"session":[]}],"summary":"Read a service principal","tags":["service-principals"],"x-pb-boundary":"organization","x-pb-permission":"org:service-principals:write","x-pb-session-only":true}},"/_pb/service-principals/{principal}/permissions":{"put":{"operationId":"setServicePrincipalPermissions","parameters":[{"in":"path","name":"principal","required":true,"schema":{"pattern":"^[0-7][0-9A-HJKMNP-TV-Z]{25}$","type":"string"}},{"in":"header","name":"If-Match","required":true,"schema":{"pattern":"^\\"r([1-9][0-9]*)\\"$","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"additionalProperties":false,"properties":{"permissions":{"items":{"enum":["org:read","org:settings:write","org:users:read","org:users:write","org:roles:read","org:roles:write","org:grants:read","org:grants:write","org:projects:create","org:projects:archive","org:sources:read","org:sources:write","org:tokens:read","org:tokens:revoke","org:service-principals:write","org:packages:manage","org:import:write","org:import:approve","org:audit:read","project:read","project:settings:write","project:grants:read","project:grants:write","project:packages:read","project:packages:write","project:packages:manage","project:sources:read","project:sources:write","project:service-principals:write","project:tokens:create","project:tokens:read","project:tokens:revoke","project:audit:read"],"type":"string"},"type":"array"}},"required":["permissions"],"type":"object"}}},"required":true},"responses":{"204":{"description":"No content"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Invalid request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Authentication required"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Access denied; Reauthentication required"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Not found"},"412":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Precondition failed"},"413":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Payload too large"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Unsupported media type"},"428":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Precondition required"},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Service unavailable"}},"security":[{"session":[]}],"summary":"Set service principal permissions","tags":["service-principals"],"x-pb-boundary":"organization","x-pb-permission":"org:service-principals:write","x-pb-session-only":true}},"/_pb/service-principals/{principal}/restore":{"post":{"operationId":"restoreServicePrincipal","parameters":[{"in":"path","name":"principal","required":true,"schema":{"pattern":"^[0-7][0-9A-HJKMNP-TV-Z]{25}$","type":"string"}},{"in":"header","name":"If-Match","required":true,"schema":{"pattern":"^\\"r([1-9][0-9]*)\\"$","type":"string"}}],"responses":{"204":{"description":"No content"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Invalid request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Authentication required"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Access denied; Reauthentication required"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Not found"},"412":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Precondition failed"},"428":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Precondition required"},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Service unavailable"}},"security":[{"session":[]}],"summary":"Restore service principal","tags":["service-principals"],"x-pb-boundary":"organization","x-pb-permission":"org:service-principals:write","x-pb-session-only":true}},"/_pb/service-principals/{principal}/suspend":{"post":{"operationId":"suspendServicePrincipal","parameters":[{"in":"path","name":"principal","required":true,"schema":{"pattern":"^[0-7][0-9A-HJKMNP-TV-Z]{25}$","type":"string"}}],"responses":{"204":{"description":"No content"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Invalid request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Authentication required"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Access denied; Reauthentication required"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Not found"},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Service unavailable"}},"security":[{"session":[]}],"summary":"Suspend service principal","tags":["service-principals"],"x-pb-boundary":"organization","x-pb-permission":"org:service-principals:write","x-pb-session-only":true}},"/_pb/session":{"get":{"operationId":"getSession","responses":{"200":{"content":{"application/json":{"schema":{"additionalProperties":false,"properties":{"expiresAt":{"type":"string"},"reauthFresh":{"type":"boolean"},"user":{"additionalProperties":false,"properties":{"displayName":{"type":["string","null"]},"email":{"type":"string"},"id":{"type":"string"}},"required":["id","email","displayName"],"type":"object"}},"required":["user","reauthFresh","expiresAt"],"type":"object"}}},"description":"Response"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Invalid request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Authentication required"}},"security":[],"summary":"Get the current session","tags":["session"],"x-pb-boundary":"none","x-pb-permission":null,"x-pb-session-only":false}},"/_pb/sources":{"get":{"operationId":"listOrganizationSources","parameters":[{"in":"query","name":"after","required":false,"schema":{"pattern":"^[0-7][0-9A-HJKMNP-TV-Z]{25}$","type":"string"}},{"in":"query","name":"limit","required":false,"schema":{"pattern":"^(?:[1-9][0-9]?|100)$","type":"string"}},{"in":"query","name":"ownership","required":false,"schema":{"enum":["organization","project","all"],"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"additionalProperties":false,"properties":{"items":{"items":{"additionalProperties":false,"properties":{"attachedProjectCount":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"config":{"anyOf":[{"additionalProperties":false,"properties":{"installationId":{"exclusiveMinimum":0,"maximum":9007199254740991,"type":"integer"},"packageName":{"type":"string"},"provider":{"enum":["github","git","ssh"],"type":"string"},"refs":{"additionalProperties":false,"properties":{"branches":{"items":{"type":"string"},"type":"array"},"tags":{"type":"boolean"}},"type":"object"},"repository":{"type":"string"}},"type":"object"},{"additionalProperties":false,"properties":{"distHosts":{"items":{"type":"string"},"type":"array"},"mirrorsFallback":{"type":"boolean"},"selection":{"additionalProperties":false,"properties":{"expandPatterns":{"type":"boolean"},"packages":{"items":{"type":"string"},"type":"array"},"patterns":{"items":{"type":"string"},"type":"array"}},"type":"object"}},"type":"object"},{"additionalProperties":false,"properties":{"distHosts":{"items":{"type":"string"},"type":"array"},"scopes":{"items":{"type":"string"},"type":"array"}},"type":"object"},{"additionalProperties":false,"properties":{"githubToken":{"type":"boolean"}},"type":"object"},{"additionalProperties":false,"properties":{},"type":"object"}]},"configComplete":{"type":"boolean"},"defaultVisibleToNewProjects":{"type":"boolean"},"ecosystem":{"enum":["composer","npm"],"type":"string"},"githubAuthentication":{"enum":["app","token"],"type":"string"},"hasCredential":{"type":"boolean"},"id":{"pattern":"^[0-7][0-9A-HJKMNP-TV-Z]{25}$","type":"string"},"lastError":{"type":["string","null"]},"lastPolledAt":{"type":["string","null"]},"lastRemovalRefusal":{"anyOf":[{"additionalProperties":false,"properties":{"absent":{"maximum":9007199254740991,"minimum":-9007199254740991,"type":"integer"},"at":{"type":"string"},"listed":{"maximum":9007199254740991,"minimum":-9007199254740991,"type":"integer"},"successful":{"maximum":9007199254740991,"minimum":-9007199254740991,"type":"integer"}},"required":["at","absent","listed","successful"],"type":"object"},{"type":"null"}]},"lastSuccessAt":{"type":["string","null"]},"name":{"type":"string"},"nextPollAt":{"type":["string","null"]},"pollIntervalSeconds":{"maximum":9007199254740991,"minimum":-9007199254740991,"type":"integer"},"projectId":{"anyOf":[{"pattern":"^[0-7][0-9A-HJKMNP-TV-Z]{25}$","type":"string"},{"type":"null"}]},"projectName":{"type":["string","null"]},"removalAcceptanceArmed":{"type":"boolean"},"removalPolicy":{"enum":["flag","exclude"],"type":"string"},"retentionDaysOverride":{"anyOf":[{"maximum":9007199254740991,"minimum":0,"type":"integer"},{"type":"null"}]},"status":{"enum":["active","degraded","failing","paused"],"type":"string"},"sync":{"additionalProperties":false,"properties":{"completed":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"errors":{"items":{"additionalProperties":false,"properties":{"code":{"enum":["network","timeout","http_error","unauthorized","rate_limited","not_found","invalid_response","tag_limit_exceeded","mass_absence","too_large","policy_denied","credential_unavailable","internal"],"type":"string"},"count":{"exclusiveMinimum":0,"maximum":9007199254740991,"type":"integer"}},"required":["code","count"],"type":"object"},"type":"array"},"failed":{"description":"Terminal package failures.","maximum":9007199254740991,"minimum":0,"type":"integer"},"generation":{"type":"string"},"listing":{"type":"boolean"},"queued":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"retrying":{"description":"Failed packages queued for another attempt; disjoint from queued, running, failed and completed.","maximum":9007199254740991,"minimum":0,"type":"integer"},"running":{"maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["listing","generation","queued","running","retrying","failed","completed","errors"],"type":"object"},"type":{"enum":["vcs","composer_repository","npm_registry","packagist_proxy","npmjs_proxy","hosted"],"type":"string"},"url":{"type":["string","null"]},"userAgent":{"type":["string","null"]}},"required":["id","projectId","name","ecosystem","type","url","status","removalPolicy","pollIntervalSeconds","lastSuccessAt","lastError","lastPolledAt","nextPollAt","hasCredential","lastRemovalRefusal","removalAcceptanceArmed","projectName","attachedProjectCount"],"type":"object"},"type":"array"},"next":{"anyOf":[{"pattern":"^[0-7][0-9A-HJKMNP-TV-Z]{25}$","type":"string"},{"type":"null"}]},"vcsProviders":{"items":{"enum":["github","git","ssh"],"type":"string"},"type":"array"}},"required":["items","next","vcsProviders"],"type":"object"}}},"description":"Response"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Invalid request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Authentication required"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Access denied"},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Service unavailable"}},"security":[{"session":[]},{"bearer":[]}],"summary":"List sources","tags":["sources"],"x-pb-boundary":"organization","x-pb-permission":"org:sources:read","x-pb-session-only":false},"post":{"operationId":"createOrganizationSource","requestBody":{"content":{"application/json":{"schema":{"additionalProperties":false,"properties":{"config":{"anyOf":[{"additionalProperties":false,"properties":{"installationId":{"exclusiveMinimum":0,"maximum":9007199254740991,"type":"integer"},"packageName":{"type":"string"},"provider":{"enum":["github","git","ssh"],"type":"string"},"refs":{"additionalProperties":false,"properties":{"branches":{"items":{"type":"string"},"type":"array"},"tags":{"type":"boolean"}},"type":"object"},"repository":{"type":"string"}},"required":["provider","repository"],"type":"object"},{"additionalProperties":false,"properties":{"distHosts":{"items":{"type":"string"},"type":"array"},"mirrorsFallback":{"type":"boolean"},"selection":{"additionalProperties":false,"properties":{"expandPatterns":{"type":"boolean"},"packages":{"items":{"type":"string"},"type":"array"},"patterns":{"items":{"type":"string"},"type":"array"}},"type":"object"}},"type":"object"},{"additionalProperties":false,"properties":{"distHosts":{"items":{"type":"string"},"type":"array"},"scopes":{"items":{"type":"string"},"type":"array"}},"type":"object"},{"additionalProperties":false,"properties":{"githubToken":{"type":"boolean"}},"type":"object"},{"additionalProperties":false,"properties":{},"type":"object"}]},"defaultVisibleToNewProjects":{"type":"boolean"},"ecosystem":{"enum":["composer","npm"],"type":"string"},"name":{"minLength":1,"type":"string"},"pollIntervalSeconds":{"exclusiveMinimum":0,"maximum":9007199254740991,"type":"integer"},"removalPolicy":{"enum":["flag","exclude"],"type":"string"},"retentionDaysOverride":{"anyOf":[{"maximum":9007199254740991,"minimum":0,"type":"integer"},{"type":"null"}]},"type":{"enum":["vcs","composer_repository","npm_registry","packagist_proxy","npmjs_proxy","hosted"],"type":"string"},"url":{"anyOf":[{"maxLength":2048,"type":"string"},{"type":"null"}]},"userAgent":{"type":["string","null"]}},"required":["name","ecosystem","type"],"type":"object"}}},"required":true},"responses":{"201":{"content":{"application/json":{"schema":{"additionalProperties":false,"properties":{"id":{"pattern":"^[0-7][0-9A-HJKMNP-TV-Z]{25}$","type":"string"}},"required":["id"],"type":"object"}}},"description":"Response"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Invalid request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Authentication required"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Access denied"},"413":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Payload too large"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Unsupported media type"},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Service unavailable"}},"security":[{"session":[]}],"summary":"Add a source","tags":["sources"],"x-pb-boundary":"organization","x-pb-permission":"org:sources:write","x-pb-session-only":true}},"/_pb/sources/{source}":{"patch":{"operationId":"updateOrganizationSource","parameters":[{"in":"path","name":"source","required":true,"schema":{"pattern":"^[0-7][0-9A-HJKMNP-TV-Z]{25}$","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"additionalProperties":false,"properties":{"config":{"anyOf":[{"additionalProperties":false,"properties":{"installationId":{"exclusiveMinimum":0,"maximum":9007199254740991,"type":"integer"},"packageName":{"type":"string"},"provider":{"enum":["github","git","ssh"],"type":"string"},"refs":{"additionalProperties":false,"properties":{"branches":{"items":{"type":"string"},"type":"array"},"tags":{"type":"boolean"}},"type":"object"},"repository":{"type":"string"}},"required":["provider","repository"],"type":"object"},{"additionalProperties":false,"properties":{"distHosts":{"items":{"type":"string"},"type":"array"},"mirrorsFallback":{"type":"boolean"},"selection":{"additionalProperties":false,"properties":{"expandPatterns":{"type":"boolean"},"packages":{"items":{"type":"string"},"type":"array"},"patterns":{"items":{"type":"string"},"type":"array"}},"type":"object"}},"type":"object"},{"additionalProperties":false,"properties":{"distHosts":{"items":{"type":"string"},"type":"array"},"scopes":{"items":{"type":"string"},"type":"array"}},"type":"object"},{"additionalProperties":false,"properties":{"githubToken":{"type":"boolean"}},"type":"object"},{"additionalProperties":false,"properties":{},"type":"object"}]},"defaultVisibleToNewProjects":{"type":"boolean"},"pollIntervalSeconds":{"exclusiveMinimum":0,"maximum":9007199254740991,"type":"integer"},"removalPolicy":{"enum":["flag","exclude"],"type":"string"},"retentionDaysOverride":{"anyOf":[{"maximum":9007199254740991,"minimum":0,"type":"integer"},{"type":"null"}]},"url":{"anyOf":[{"maxLength":2048,"type":"string"},{"type":"null"}]},"userAgent":{"type":["string","null"]}},"type":"object"}}},"required":true},"responses":{"204":{"description":"No content"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Invalid request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Authentication required"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Access denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Not found"},"413":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Payload too large"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Unsupported media type"},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Service unavailable"}},"security":[{"session":[]}],"summary":"Change source settings","tags":["sources"],"x-pb-boundary":"organization","x-pb-permission":"org:sources:write","x-pb-session-only":true}},"/_pb/sources/{source}/accept-removal":{"post":{"operationId":"acceptSourceRemoval","parameters":[{"in":"path","name":"source","required":true,"schema":{"pattern":"^[0-7][0-9A-HJKMNP-TV-Z]{25}$","type":"string"}}],"responses":{"204":{"description":"No content"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Invalid request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Authentication required"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Access denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Conflict; Source is paused; Already exists; Last holder cannot be removed; Idempotency key does not match; Already issued; Approval required"},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Service unavailable"}},"security":[{"session":[]}],"summary":"Arm a one-shot acceptance of the last refused source removal","tags":["sources"],"x-pb-boundary":"organization","x-pb-permission":"org:sources:write","x-pb-session-only":true}},"/_pb/sources/{source}/credential":{"put":{"operationId":"writeOrganizationSourceCredential","parameters":[{"in":"path","name":"source","required":true,"schema":{"pattern":"^[0-7][0-9A-HJKMNP-TV-Z]{25}$","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"additionalProperties":false,"properties":{"kind":{"enum":["http_basic","bearer","header","query","github_app","npm_token","ssh_key"],"type":"string"},"material":{"maxLength":16384,"type":"string"}},"required":["kind","material"],"type":"object"}}},"required":true},"responses":{"204":{"description":"No content"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Invalid request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Authentication required"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Access denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Not found"},"413":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Payload too large"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Unsupported media type"},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Service unavailable"}},"security":[{"session":[]}],"summary":"Replace a source credential after reauthentication","tags":["sources"],"x-pb-boundary":"organization","x-pb-permission":"org:sources:write","x-pb-session-only":true}},"/_pb/sources/{source}/enable":{"post":{"operationId":"enableSource","parameters":[{"in":"path","name":"source","required":true,"schema":{"pattern":"^[0-7][0-9A-HJKMNP-TV-Z]{25}$","type":"string"}}],"responses":{"204":{"description":"No content"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Invalid request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Authentication required"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Access denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Not found"},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Service unavailable"}},"security":[{"session":[]}],"summary":"Enable a source with registered names","tags":["sources"],"x-pb-boundary":"organization","x-pb-permission":"org:sources:write","x-pb-session-only":true}},"/_pb/sources/{source}/names":{"get":{"operationId":"listRegisteredNames","parameters":[{"in":"path","name":"source","required":true,"schema":{"pattern":"^[0-7][0-9A-HJKMNP-TV-Z]{25}$","type":"string"}},{"in":"query","name":"after","required":false,"schema":{"pattern":"^[0-7][0-9A-HJKMNP-TV-Z]{25}$","type":"string"}},{"in":"query","name":"limit","required":false,"schema":{"pattern":"^(?:[1-9][0-9]?|100)$","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"additionalProperties":false,"properties":{"items":{"items":{"additionalProperties":false,"properties":{"ecosystem":{"enum":["composer","npm"],"type":"string"},"id":{"pattern":"^[0-7][0-9A-HJKMNP-TV-Z]{25}$","type":"string"},"pattern":{"type":"string"},"sourceId":{"pattern":"^[0-7][0-9A-HJKMNP-TV-Z]{25}$","type":"string"}},"required":["id","sourceId","ecosystem","pattern"],"type":"object"},"type":"array"},"next":{"anyOf":[{"pattern":"^[0-7][0-9A-HJKMNP-TV-Z]{25}$","type":"string"},{"type":"null"}]}},"required":["items","next"],"type":"object"}}},"description":"Response"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Invalid request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Authentication required"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Access denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Not found"},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Service unavailable"}},"security":[{"session":[]},{"bearer":[]}],"summary":"List registered names","tags":["sources"],"x-pb-boundary":"organization","x-pb-permission":"org:sources:read","x-pb-session-only":false},"post":{"operationId":"addRegisteredName","parameters":[{"in":"path","name":"source","required":true,"schema":{"pattern":"^[0-7][0-9A-HJKMNP-TV-Z]{25}$","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"additionalProperties":false,"properties":{"pattern":{"maxLength":50,"pattern":"^[a-z0-9._~@!/*-]+$","type":"string"}},"required":["pattern"],"type":"object"}}},"required":true},"responses":{"201":{"content":{"application/json":{"schema":{"additionalProperties":false,"properties":{"id":{"pattern":"^[0-7][0-9A-HJKMNP-TV-Z]{25}$","type":"string"}},"required":["id"],"type":"object"}}},"description":"Response"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Invalid request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Authentication required"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Access denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Not found"},"413":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Payload too large"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Unsupported media type"},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Service unavailable"}},"security":[{"session":[]}],"summary":"Register a name pattern","tags":["sources"],"x-pb-boundary":"organization","x-pb-permission":"org:sources:write","x-pb-session-only":true}},"/_pb/sources/{source}/names/{name}":{"delete":{"operationId":"removeRegisteredName","parameters":[{"in":"path","name":"source","required":true,"schema":{"pattern":"^[0-7][0-9A-HJKMNP-TV-Z]{25}$","type":"string"}},{"in":"path","name":"name","required":true,"schema":{"pattern":"^[0-7][0-9A-HJKMNP-TV-Z]{25}$","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"additionalProperties":false,"properties":{"paused":{"const":true,"type":"boolean"}},"required":["paused"],"type":"object"}}},"description":"Response"},"204":{"description":"No content"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Invalid request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Authentication required"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Access denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Not found"},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Service unavailable"}},"security":[{"session":[]}],"summary":"Remove a registered name","tags":["sources"],"x-pb-boundary":"organization","x-pb-permission":"org:sources:write","x-pb-session-only":true}},"/_pb/sources/{source}/pause":{"post":{"operationId":"pauseOrganizationSource","parameters":[{"in":"path","name":"source","required":true,"schema":{"pattern":"^[0-7][0-9A-HJKMNP-TV-Z]{25}$","type":"string"}}],"responses":{"204":{"description":"No content"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Invalid request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Authentication required"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Access denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Not found"},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Service unavailable"}},"security":[{"session":[]}],"summary":"Pause a source","tags":["sources"],"x-pb-boundary":"organization","x-pb-permission":"org:sources:write","x-pb-session-only":true}},"/_pb/sources/{source}/resume":{"post":{"operationId":"resumeOrganizationSource","parameters":[{"in":"path","name":"source","required":true,"schema":{"pattern":"^[0-7][0-9A-HJKMNP-TV-Z]{25}$","type":"string"}}],"responses":{"204":{"description":"No content"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Invalid request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Authentication required"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Access denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Not found"},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Service unavailable"}},"security":[{"session":[]}],"summary":"Resume a proxy source","tags":["sources"],"x-pb-boundary":"organization","x-pb-permission":"org:sources:write","x-pb-session-only":true}},"/_pb/sources/{source}/sync":{"post":{"operationId":"syncOrganizationSource","parameters":[{"in":"path","name":"source","required":true,"schema":{"pattern":"^[0-7][0-9A-HJKMNP-TV-Z]{25}$","type":"string"}}],"responses":{"202":{"description":"No content"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Invalid request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Authentication required"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Access denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Conflict; Source is paused; Already exists; Last holder cannot be removed; Idempotency key does not match; Already issued; Approval required"},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Service unavailable"}},"security":[{"session":[]}],"summary":"Request a source sync","tags":["sources"],"x-pb-boundary":"organization","x-pb-permission":"org:sources:write","x-pb-session-only":true}},"/_pb/tokens":{"get":{"operationId":"listTokens","parameters":[{"in":"query","name":"after","required":false,"schema":{"pattern":"^[0-7][0-9A-HJKMNP-TV-Z]{25}$","type":"string"}},{"in":"query","name":"kind","required":false,"schema":{"enum":["pat","svc"],"type":"string"}},{"in":"query","name":"limit","required":false,"schema":{"pattern":"^(?:[1-9][0-9]?|100)$","type":"string"}},{"in":"query","name":"status","required":false,"schema":{"enum":["active","expired","revoked"],"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"additionalProperties":false,"properties":{"items":{"items":{"additionalProperties":false,"properties":{"createdAt":{"type":"string"},"createdByUserId":{"type":["string","null"]},"expiresAt":{"type":["string","null"]},"id":{"type":"string"},"kind":{"enum":["pat","svc"],"type":"string"},"lastUsedAt":{"type":["string","null"]},"name":{"type":"string"},"projectCount":{"maximum":9007199254740991,"minimum":-9007199254740991,"type":"integer"},"projectId":{"type":["string","null"]},"projectMode":{"anyOf":[{"enum":["all","selected"],"type":"string"},{"type":"null"}]},"readOnly":{"type":"boolean"},"revokedAt":{"type":["string","null"]},"scope":{"enum":["read","write","full"],"type":"string"},"servicePrincipalId":{"type":["string","null"]},"status":{"enum":["active","expired","revoked"],"type":"string"},"userId":{"type":["string","null"]}},"required":["id","kind","name","scope","readOnly","status","projectMode","projectCount","projectId","userId","createdByUserId","servicePrincipalId","createdAt","expiresAt","lastUsedAt","revokedAt"],"type":"object"},"type":"array"},"lifetime":{"additionalProperties":false,"properties":{"personal":{"additionalProperties":false,"properties":{"defaultDays":{"maximum":9007199254740991,"minimum":-9007199254740991,"type":"integer"},"maxDays":{"maximum":9007199254740991,"minimum":-9007199254740991,"type":"integer"}},"required":["maxDays","defaultDays"],"type":"object"},"service":{"additionalProperties":false,"properties":{"defaultDays":{"maximum":9007199254740991,"minimum":-9007199254740991,"type":"integer"},"maxDays":{"maximum":9007199254740991,"minimum":-9007199254740991,"type":"integer"}},"required":["maxDays","defaultDays"],"type":"object"}},"required":["personal","service"],"type":"object"},"next":{"type":["string","null"]}},"required":["items","next","lifetime"],"type":"object"}}},"description":"Response"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Invalid request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Authentication required"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Access denied"}},"security":[{"session":[]}],"summary":"List organization tokens","tags":["tokens"],"x-pb-boundary":"organization","x-pb-permission":"org:tokens:read","x-pb-session-only":true},"post":{"operationId":"createOrganizationToken","requestBody":{"content":{"application/json":{"schema":{"additionalProperties":false,"properties":{"expiresAt":{"type":"string"},"lifetimeDays":{"maximum":9007199254740991,"minimum":-9007199254740991,"type":"integer"},"name":{"type":"string"},"readOnly":{"type":"boolean"},"scope":{"enum":["read","write","full"],"type":"string"},"servicePrincipalId":{"pattern":"^[0-7][0-9A-HJKMNP-TV-Z]{25}$","type":"string"}},"required":["servicePrincipalId","name","scope"],"type":"object"}}},"required":true},"responses":{"201":{"content":{"application/json":{"schema":{"additionalProperties":false,"properties":{"id":{"type":"string"},"token":{"type":"string"}},"required":["id","token"],"type":"object"}}},"description":"Response"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Invalid request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Authentication required"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Access denied; Reauthentication required"},"413":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Payload too large"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Unsupported media type"},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Service unavailable"}},"security":[{"session":[]}],"summary":"Issue an organization service token","tags":["tokens"],"x-pb-boundary":"organization","x-pb-permission":"org:service-principals:write","x-pb-session-only":true}},"/_pb/tokens/{token}":{"delete":{"operationId":"revokeToken","parameters":[{"in":"path","name":"token","required":true,"schema":{"pattern":"^[0-7][0-9A-HJKMNP-TV-Z]{25}$","type":"string"}}],"responses":{"204":{"description":"No content"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Invalid request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Authentication required"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Access denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Not found"},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Service unavailable"}},"security":[{"session":[]}],"summary":"Revoke an organization token","tags":["tokens"],"x-pb-boundary":"organization","x-pb-permission":"org:tokens:revoke","x-pb-session-only":true},"get":{"operationId":"getToken","parameters":[{"in":"path","name":"token","required":true,"schema":{"pattern":"^[0-7][0-9A-HJKMNP-TV-Z]{25}$","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"additionalProperties":false,"properties":{"createdAt":{"type":"string"},"createdByUserId":{"type":["string","null"]},"expiresAt":{"type":["string","null"]},"id":{"type":"string"},"kind":{"enum":["pat","svc"],"type":"string"},"lastUsedAt":{"type":["string","null"]},"name":{"type":"string"},"projectCount":{"maximum":9007199254740991,"minimum":-9007199254740991,"type":"integer"},"projectId":{"type":["string","null"]},"projectMode":{"anyOf":[{"enum":["all","selected"],"type":"string"},{"type":"null"}]},"readOnly":{"type":"boolean"},"revokedAt":{"type":["string","null"]},"scope":{"enum":["read","write","full"],"type":"string"},"servicePrincipalId":{"type":["string","null"]},"status":{"enum":["active","expired","revoked"],"type":"string"},"userId":{"type":["string","null"]}},"required":["id","kind","name","scope","readOnly","status","projectMode","projectCount","projectId","userId","createdByUserId","servicePrincipalId","createdAt","expiresAt","lastUsedAt","revokedAt"],"type":"object"}}},"description":"Response"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Invalid request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Authentication required"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Access denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Not found"}},"security":[{"session":[]}],"summary":"Get an organization token","tags":["tokens"],"x-pb-boundary":"organization","x-pb-permission":"org:tokens:read","x-pb-session-only":true}},"/_pb/tokens/{token}/rotate":{"post":{"operationId":"rotateToken","parameters":[{"in":"path","name":"token","required":true,"schema":{"pattern":"^[0-7][0-9A-HJKMNP-TV-Z]{25}$","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"additionalProperties":false,"properties":{"expiresAt":{"type":"string"},"lifetimeDays":{"maximum":9007199254740991,"minimum":-9007199254740991,"type":"integer"},"name":{"type":"string"},"overlapDays":{"anyOf":[{"const":0,"type":"number"},{"const":1,"type":"number"},{"const":7,"type":"number"}]}},"required":["overlapDays"],"type":"object"}}},"required":true},"responses":{"201":{"content":{"application/json":{"schema":{"additionalProperties":false,"properties":{"id":{"type":"string"},"replacedExpiresAt":{"type":"string"},"replacedTokenId":{"type":"string"},"token":{"type":"string"}},"required":["id","token","replacedTokenId","replacedExpiresAt"],"type":"object"}}},"description":"Response"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Invalid request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Authentication required"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Access denied; Reauthentication required"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Conflict; Source is paused; Already exists; Last holder cannot be removed; Idempotency key does not match; Already issued; Approval required"},"413":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Payload too large"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Error"},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Service unavailable"}},"security":[{"session":[]}],"summary":"Rotate an organization service token","tags":["tokens"],"x-pb-boundary":"organization","x-pb-permission":"org:service-principals:write","x-pb-session-only":true}},"/_pb/users":{"get":{"operationId":"listUsers","parameters":[{"in":"query","name":"after","required":false,"schema":{"pattern":"^[0-7][0-9A-HJKMNP-TV-Z]{25}$","type":"string"}},{"in":"query","name":"limit","required":false,"schema":{"pattern":"^(?:[1-9][0-9]?|100)$","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"additionalProperties":false,"properties":{"items":{"items":{"additionalProperties":false,"properties":{"createdAt":{"type":"string"},"displayName":{"type":["string","null"]},"email":{"type":"string"},"id":{"type":"string"},"lastLoginAt":{"type":["string","null"]},"status":{"enum":["active","suspended"],"type":"string"}},"required":["id","displayName","status","lastLoginAt","createdAt"],"type":"object"},"type":"array"},"next":{"type":["string","null"]}},"required":["items","next"],"type":"object"}}},"description":"Response"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Invalid request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Authentication required"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Access denied"}},"security":[{"session":[]},{"bearer":[]}],"summary":"List organization users","tags":["users"],"x-pb-boundary":"organization","x-pb-permission":"org:users:read","x-pb-session-only":false}},"/_pb/users/{user}":{"patch":{"operationId":"updateUser","parameters":[{"in":"path","name":"user","required":true,"schema":{"pattern":"^[0-7][0-9A-HJKMNP-TV-Z]{25}$","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"additionalProperties":false,"properties":{"status":{"enum":["active","suspended"],"type":"string"}},"required":["status"],"type":"object"}}},"required":true},"responses":{"204":{"description":"No content"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Invalid request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Authentication required"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Access denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Not found"},"413":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Payload too large"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Unsupported media type"},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Service unavailable"}},"security":[{"session":[]}],"summary":"Suspend or reactivate a user","tags":["users"],"x-pb-boundary":"organization","x-pb-permission":"org:users:write","x-pb-session-only":true}}}}');
53380
+ var openApiDocument = JSON.parse('{"components":{"schemas":{"ErrorEnvelope":{"additionalProperties":false,"properties":{"error":{"additionalProperties":false,"dependentSchemas":{"problems":{"properties":{"code":{"const":"weak_password"}}}},"properties":{"code":{"type":"string"},"details":{"items":{"additionalProperties":false,"properties":{"code":{"enum":["invalid_type","too_small","too_big","invalid_format","invalid_value","unrecognized_keys","invalid_union","invalid","invalid_encoding","too_deep","invalid_json"],"type":"string"},"location":{"enum":["params","query","body"],"type":"string"},"path":{"type":"string"}},"required":["path","code"],"type":"object"},"maxItems":20,"type":"array"},"message":{"type":"string"},"problems":{"items":{"enum":["too_short","too_long","equals_email","not_well_formed"],"type":"string"},"minItems":1,"type":"array"},"requestId":{"type":"string"}},"required":["code","message","requestId"],"type":"object"}},"required":["error"],"type":"object"}},"securitySchemes":{"bearer":{"scheme":"bearer","type":"http"},"session":{"description":"Session authentication. Send the X-CSRF-Token header on state-changing requests.","in":"cookie","name":"__Host-pb_session","type":"apiKey"}}},"info":{"title":"Package Broker","version":"2"},"jsonSchemaDialect":"https://json-schema.org/draft/2020-12/schema","openapi":"3.1.0","paths":{"/_pb/audit":{"get":{"operationId":"listAudit","parameters":[{"in":"query","name":"action","required":false,"schema":{"maxLength":200,"minLength":1,"type":"string"}},{"in":"query","name":"actor","required":false,"schema":{"maxLength":200,"minLength":1,"type":"string"}},{"in":"query","name":"after","required":false,"schema":{"maxLength":200,"minLength":1,"type":"string"}},{"in":"query","name":"limit","required":false,"schema":{"maxLength":16,"pattern":"^[0-9]+$","type":"string"}},{"in":"query","name":"project","required":false,"schema":{"maxLength":200,"minLength":1,"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"additionalProperties":false,"properties":{"items":{"items":{"additionalProperties":false,"properties":{"action":{"type":"string"},"actor":{"additionalProperties":false,"properties":{"id":{"type":["string","null"]},"type":{"type":"string"}},"required":["type","id"],"type":"object"},"createdAt":{"type":"string"},"id":{"type":"string"},"payload":{"additionalProperties":false,"properties":{"changes":{"additionalProperties":{"additionalProperties":false,"properties":{"new":{"anyOf":[{"type":"string"},{"type":"number"},{"type":"boolean"},{"type":"null"},{"items":{"type":"string"},"type":"array"}]},"old":{"anyOf":[{"type":"string"},{"type":"number"},{"type":"boolean"},{"type":"null"},{"items":{"type":"string"},"type":"array"}]}},"type":"object"},"propertyNames":{"type":"string"},"type":"object"},"op_id":{"type":"string"},"request_id":{"type":"string"}},"type":"object"},"projectId":{"type":["string","null"]},"seq":{"maximum":9007199254740991,"minimum":-9007199254740991,"type":"integer"},"targetId":{"type":["string","null"]},"targetType":{"type":"string"}},"required":["id","seq","action","actor","targetType","targetId","projectId","createdAt","payload"],"type":"object"},"type":"array"},"next":{"type":["string","null"]}},"required":["items","next"],"type":"object"}}},"description":"Response"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Invalid request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Authentication required"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Access denied"}},"security":[{"session":[]},{"bearer":[]}],"summary":"List audit events","tags":["audit"],"x-pb-boundary":"organization","x-pb-permission":"org:audit:read","x-pb-session-only":false}},"/_pb/audit/head":{"get":{"operationId":"auditHead","responses":{"200":{"content":{"application/json":{"schema":{"additionalProperties":false,"properties":{"hash":{"type":"string"},"lastVerifiedAt":{"type":["string","null"]},"pendingCount":{"maximum":9007199254740991,"minimum":-9007199254740991,"type":"integer"},"seq":{"maximum":9007199254740991,"minimum":-9007199254740991,"type":"integer"}},"required":["seq","hash","pendingCount","lastVerifiedAt"],"type":"object"}}},"description":"Response"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Invalid request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Authentication required"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Access denied"}},"security":[{"session":[]},{"bearer":[]}],"summary":"Read audit chain head","tags":["audit"],"x-pb-boundary":"organization","x-pb-permission":"org:audit:read","x-pb-session-only":false}},"/_pb/auth/local/login":{"post":{"operationId":"localLogin","requestBody":{"content":{"application/json":{"schema":{"additionalProperties":false,"properties":{"code":{"maxLength":1024,"type":"string"},"email":{"maxLength":1024,"type":"string"},"password":{"maxLength":1024,"type":"string"}},"required":["email","password","code"],"type":"object"}}},"required":true},"responses":{"204":{"description":"No content"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Invalid request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Authentication required"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Access denied; Reauthentication required"},"413":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Payload too large"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Unsupported media type"}},"security":[],"summary":"Sign in with the local login","tags":["auth"],"x-pb-boundary":"none","x-pb-permission":null,"x-pb-session-only":false}},"/_pb/auth/local/reauth":{"post":{"operationId":"localReauth","requestBody":{"content":{"application/json":{"schema":{"additionalProperties":false,"properties":{"code":{"maxLength":1024,"type":"string"},"password":{"maxLength":1024,"type":"string"}},"required":["password","code"],"type":"object"}}},"required":true},"responses":{"204":{"description":"No content"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Invalid request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Authentication required"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Access denied; Reauthentication required"},"413":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Payload too large"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Unsupported media type"}},"security":[],"summary":"Re-authenticate with the local login","tags":["auth"],"x-pb-boundary":"none","x-pb-permission":null,"x-pb-session-only":false}},"/_pb/auth/local/setup/finish":{"post":{"operationId":"finishLocalSetup","requestBody":{"content":{"application/json":{"schema":{"additionalProperties":false,"properties":{"code":{"maxLength":1024,"type":"string"},"password":{"maxLength":1024,"type":"string"},"token":{"maxLength":1024,"type":"string"}},"required":["token","password","code"],"type":"object"}}},"required":true},"responses":{"204":{"description":"No content"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Invalid request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Authentication required"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Access denied; Reauthentication required"},"413":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Payload too large"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Unsupported media type"}},"security":[],"summary":"Finish the local login setup and sign in","tags":["auth"],"x-pb-boundary":"none","x-pb-permission":null,"x-pb-session-only":false}},"/_pb/auth/local/setup/start":{"post":{"operationId":"startLocalSetup","requestBody":{"content":{"application/json":{"schema":{"additionalProperties":false,"properties":{"token":{"maxLength":1024,"type":"string"}},"required":["token"],"type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"additionalProperties":false,"properties":{"provisioningUri":{"type":"string"},"secret":{"type":"string"}},"required":["provisioningUri","secret"],"type":"object"}}},"description":"Response"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Invalid request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Authentication required"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Access denied; Reauthentication required"},"413":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Payload too large"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Unsupported media type"}},"security":[],"summary":"Start the local login setup","tags":["auth"],"x-pb-boundary":"none","x-pb-permission":null,"x-pb-session-only":false}},"/_pb/auth/logout":{"post":{"operationId":"logout","responses":{"204":{"description":"No content"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Invalid request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Authentication required"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Access denied; Reauthentication required"}},"security":[],"summary":"End the current session","tags":["session"],"x-pb-boundary":"none","x-pb-permission":null,"x-pb-session-only":false}},"/_pb/auth/providers":{"get":{"operationId":"listAuthProviders","responses":{"200":{"content":{"application/json":{"schema":{"additionalProperties":false,"properties":{"local":{"type":"boolean"},"providers":{"items":{"additionalProperties":false,"properties":{"displayName":{"type":"string"},"id":{"type":"string"},"kind":{"enum":["cloudflare-access","oidc"],"type":"string"},"supportsReauth":{"type":"boolean"}},"required":["id","kind","displayName","supportsReauth"],"type":"object"},"type":"array"}},"required":["providers","local"],"type":"object"}}},"description":"Response"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Invalid request"}},"security":[],"summary":"List the sign-in methods","tags":["auth"],"x-pb-boundary":"none","x-pb-permission":null,"x-pb-session-only":false}},"/_pb/auth/sso/{provider}/callback":{"get":{"operationId":"finishSsoLogin","parameters":[{"in":"path","name":"provider","required":true,"schema":{"type":"string"}}],"responses":{"303":{"description":"No content"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Invalid request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Authentication required"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Not found"}},"security":[],"summary":"Finish a single sign-on login or re-authentication","tags":["auth"],"x-pb-boundary":"none","x-pb-permission":null,"x-pb-session-only":false}},"/_pb/auth/sso/{provider}/start":{"post":{"operationId":"startSsoLogin","parameters":[{"in":"path","name":"provider","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"additionalProperties":false,"properties":{"purpose":{"enum":["login","reauth"],"type":"string"},"returnTo":{"type":"string"}},"required":["purpose"],"type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"additionalProperties":false,"properties":{"location":{"type":"string"}},"required":["location"],"type":"object"}}},"description":"Response"},"303":{"description":"No content"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Invalid request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Authentication required"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Access denied; Reauthentication required"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Not found"},"413":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Payload too large"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Unsupported media type"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Upstream request refused; Bad gateway"}},"security":[],"summary":"Start a single sign-on login or re-authentication","tags":["auth"],"x-pb-boundary":"none","x-pb-permission":null,"x-pb-session-only":false}},"/_pb/grants":{"get":{"operationId":"listGrants","parameters":[{"in":"query","name":"after","required":false,"schema":{"pattern":"^[0-7][0-9A-HJKMNP-TV-Z]{25}$","type":"string"}},{"in":"query","name":"limit","required":false,"schema":{"pattern":"^([1-9][0-9]?|100)$","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"additionalProperties":false,"properties":{"items":{"items":{"additionalProperties":false,"properties":{"createdAt":{"type":"string"},"id":{"type":"string"},"revision":{"maximum":9007199254740991,"minimum":-9007199254740991,"type":"integer"},"role":{"anyOf":[{"additionalProperties":false,"properties":{"id":{"type":"string"},"name":{"type":"string"},"permissions":{"items":{"type":"string"},"type":"array"}},"required":["id","name","permissions"],"type":"object"},{"type":"null"}]},"roleId":{"type":"string"},"subject":{"anyOf":[{"additionalProperties":false,"properties":{"type":{"const":"email","type":"string"},"value":{"type":"string"},"visibility":{"const":"visible","type":"string"}},"required":["type","value","visibility"],"type":"object"},{"additionalProperties":false,"properties":{"type":{"const":"email","type":"string"},"visibility":{"const":"redacted","type":"string"}},"required":["type","visibility"],"type":"object"},{"additionalProperties":false,"properties":{"provider":{"type":"string"},"type":{"const":"group","type":"string"},"value":{"type":"string"},"visibility":{"const":"visible","type":"string"}},"required":["type","provider","value","visibility"],"type":"object"},{"additionalProperties":false,"properties":{"provider":{"type":"string"},"type":{"const":"group","type":"string"},"visibility":{"const":"redacted","type":"string"}},"required":["type","provider","visibility"],"type":"object"}]}},"required":["id","subject","roleId","role","createdAt","revision"],"type":"object"},"type":"array"},"next":{"type":["string","null"]}},"required":["items","next"],"type":"object"}}},"description":"Response"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Invalid request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Authentication required"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Access denied"},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Service unavailable"}},"security":[{"session":[]},{"bearer":[]}],"summary":"List organization grants","tags":["grants"],"x-pb-boundary":"organization","x-pb-permission":"org:grants:read","x-pb-session-only":false},"post":{"operationId":"createGrant","requestBody":{"content":{"application/json":{"schema":{"additionalProperties":false,"properties":{"roleId":{"pattern":"^[0-7][0-9A-HJKMNP-TV-Z]{25}$","type":"string"},"subject":{"anyOf":[{"additionalProperties":false,"properties":{"type":{"const":"email","type":"string"},"value":{"maxLength":320,"minLength":1,"type":"string"}},"required":["type","value"],"type":"object"},{"additionalProperties":false,"properties":{"provider":{"maxLength":64,"minLength":1,"type":"string"},"type":{"const":"group","type":"string"},"value":{"maxLength":512,"minLength":1,"type":"string"}},"required":["type","provider","value"],"type":"object"}]}},"required":["subject","roleId"],"type":"object"}}},"required":true},"responses":{"201":{"content":{"application/json":{"schema":{"additionalProperties":false,"properties":{"id":{"pattern":"^[0-7][0-9A-HJKMNP-TV-Z]{25}$","type":"string"}},"required":["id"],"type":"object"}}},"description":"Response"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Invalid request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Authentication required"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Access denied"},"413":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Payload too large"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Unsupported media type"},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Service unavailable"}},"security":[{"session":[]}],"summary":"Add an organization grant","tags":["grants"],"x-pb-boundary":"organization","x-pb-permission":"org:grants:write","x-pb-session-only":true}},"/_pb/grants/{grant}":{"delete":{"operationId":"revokeGrant","parameters":[{"in":"path","name":"grant","required":true,"schema":{"pattern":"^[0-7][0-9A-HJKMNP-TV-Z]{25}$","type":"string"}},{"in":"header","name":"If-Match","required":true,"schema":{"pattern":"^\\"r([1-9][0-9]*)\\"$","type":"string"}}],"responses":{"204":{"description":"No content"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Invalid request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Authentication required"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Access denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Not found"},"412":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Precondition failed"},"428":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Precondition required"},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Service unavailable"}},"security":[{"session":[]}],"summary":"Revoke a grant","tags":["grants"],"x-pb-boundary":"organization","x-pb-permission":"org:grants:write","x-pb-session-only":true},"patch":{"operationId":"changeGrant","parameters":[{"in":"path","name":"grant","required":true,"schema":{"pattern":"^[0-7][0-9A-HJKMNP-TV-Z]{25}$","type":"string"}},{"in":"header","name":"If-Match","required":true,"schema":{"pattern":"^\\"r([1-9][0-9]*)\\"$","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"additionalProperties":false,"properties":{"roleId":{"pattern":"^[0-7][0-9A-HJKMNP-TV-Z]{25}$","type":"string"}},"required":["roleId"],"type":"object"}}},"required":true},"responses":{"204":{"description":"No content"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Invalid request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Authentication required"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Access denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Not found"},"412":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Precondition failed"},"413":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Payload too large"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Unsupported media type"},"428":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Precondition required"},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Service unavailable"}},"security":[{"session":[]}],"summary":"Change the role of a grant","tags":["grants"],"x-pb-boundary":"organization","x-pb-permission":"org:grants:write","x-pb-session-only":true}},"/_pb/import-runs":{"get":{"operationId":"listImportRuns","parameters":[{"in":"query","name":"cursor","required":false,"schema":{"maxLength":4096,"minLength":1,"type":"string"}},{"in":"query","name":"limit","required":false,"schema":{"pattern":"^([1-9][0-9]?|100)$","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"additionalProperties":false,"properties":{"items":{"items":{"additionalProperties":false,"properties":{"acceptedAt":{"type":["string","null"]},"approvedAt":{"type":["string","null"]},"approvedByUserId":{"type":["string","null"]},"beforeImageExpiresAt":{"type":["string","null"]},"credentialWindowUntil":{"type":["string","null"]},"id":{"pattern":"^[0-7][0-9A-HJKMNP-TV-Z]{25}$","type":"string"},"planHash":{"type":["string","null"]},"state":{"enum":["planned","applying","failed","applied","verifying","verified","rolled_back","cancelled"],"type":"string"}},"required":["id","state","planHash","approvedAt","approvedByUserId","acceptedAt","beforeImageExpiresAt"],"type":"object"},"type":"array"},"next":{"type":["string","null"]}},"required":["items","next"],"type":"object"}}},"description":"Response"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Invalid request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Authentication required"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Access denied"}},"security":[{"session":[]},{"bearer":[]}],"summary":"List import runs","tags":["imports"],"x-pb-boundary":"organization","x-pb-permission":"org:import:write","x-pb-session-only":false},"post":{"operationId":"createImportRun","requestBody":{"content":{"application/json":{"schema":{}}},"required":true},"responses":{"201":{"content":{"application/json":{"schema":{"additionalProperties":false,"properties":{"id":{"pattern":"^[0-7][0-9A-HJKMNP-TV-Z]{25}$","type":"string"},"planHash":{"type":"string"},"state":{"const":"planned","type":"string"}},"required":["id","planHash","state"],"type":"object"}}},"description":"Response"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Invalid request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Authentication required"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Access denied"},"413":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Payload too large"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Unsupported media type"}},"security":[{"session":[]},{"bearer":[]}],"summary":"Plan an import","tags":["imports"],"x-pb-boundary":"organization","x-pb-permission":"org:import:write","x-pb-session-only":false}},"/_pb/import-runs/{id}":{"get":{"operationId":"getImportRun","parameters":[{"in":"path","name":"id","required":true,"schema":{"pattern":"^[0-7][0-9A-HJKMNP-TV-Z]{25}$","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"additionalProperties":false,"properties":{"acceptedAt":{"type":["string","null"]},"approvedAt":{"type":["string","null"]},"approvedByUserId":{"type":["string","null"]},"beforeImageExpiresAt":{"type":["string","null"]},"credentialWindowUntil":{"type":["string","null"]},"credentials":{"items":{"additionalProperties":false,"properties":{"bound":{"type":"boolean"},"sourceRef":{"type":"string"}},"required":["sourceRef","bound"],"type":"object"},"type":"array"},"id":{"pattern":"^[0-7][0-9A-HJKMNP-TV-Z]{25}$","type":"string"},"planHash":{"type":["string","null"]},"state":{"enum":["planned","applying","failed","applied","verifying","verified","rolled_back","cancelled"],"type":"string"}},"required":["id","state","planHash","approvedAt","approvedByUserId","acceptedAt","beforeImageExpiresAt"],"type":"object"}}},"description":"Response"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Invalid request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Authentication required"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Access denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Not found"}},"security":[{"session":[]},{"bearer":[]}],"summary":"Read an import run","tags":["imports"],"x-pb-boundary":"organization","x-pb-permission":"org:import:write","x-pb-session-only":false}},"/_pb/import-runs/{id}/accept":{"post":{"operationId":"acceptImportRun","parameters":[{"in":"path","name":"id","required":true,"schema":{"pattern":"^[0-7][0-9A-HJKMNP-TV-Z]{25}$","type":"string"}}],"responses":{"204":{"description":"No content"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Invalid request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Authentication required"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Access denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Not found"}},"security":[{"session":[]}],"summary":"accept an import run","tags":["imports"],"x-pb-boundary":"organization","x-pb-permission":"org:import:approve","x-pb-session-only":true}},"/_pb/import-runs/{id}/apply":{"post":{"operationId":"applyImportRun","parameters":[{"in":"path","name":"id","required":true,"schema":{"pattern":"^[0-7][0-9A-HJKMNP-TV-Z]{25}$","type":"string"}}],"responses":{"204":{"description":"No content"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Invalid request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Authentication required"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Access denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Not found"}},"security":[{"session":[]}],"summary":"apply an import run","tags":["imports"],"x-pb-boundary":"organization","x-pb-permission":"org:import:approve","x-pb-session-only":true}},"/_pb/import-runs/{id}/approve":{"post":{"operationId":"approveImportRun","parameters":[{"in":"path","name":"id","required":true,"schema":{"pattern":"^[0-7][0-9A-HJKMNP-TV-Z]{25}$","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"additionalProperties":false,"properties":{"planHash":{"maxLength":64,"type":"string"}},"type":"object"}}},"required":true},"responses":{"204":{"description":"No content"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Invalid request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Authentication required"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Access denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Not found"},"413":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Payload too large"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Unsupported media type"}},"security":[{"session":[]}],"summary":"approve an import run","tags":["imports"],"x-pb-boundary":"organization","x-pb-permission":"org:import:approve","x-pb-session-only":true}},"/_pb/import-runs/{id}/cancel":{"post":{"operationId":"cancelImportRun","parameters":[{"in":"path","name":"id","required":true,"schema":{"pattern":"^[0-7][0-9A-HJKMNP-TV-Z]{25}$","type":"string"}}],"responses":{"204":{"description":"No content"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Invalid request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Authentication required"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Access denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Not found"}},"security":[{"session":[]}],"summary":"cancel an import run","tags":["imports"],"x-pb-boundary":"organization","x-pb-permission":"org:import:approve","x-pb-session-only":true}},"/_pb/import-runs/{id}/credentials/{externalRef}":{"put":{"operationId":"acceptImportCredential","parameters":[{"in":"path","name":"id","required":true,"schema":{"pattern":"^[0-7][0-9A-HJKMNP-TV-Z]{25}$","type":"string"}},{"in":"path","name":"externalRef","required":true,"schema":{"pattern":"^[A-Za-z0-9._:/-]{1,200}$","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"additionalProperties":false,"properties":{"kind":{"enum":["http_basic","bearer","header","query","github_app","npm_token","ssh_key"],"type":"string"},"material":{"maxLength":16384,"type":"string"}},"required":["kind","material"],"type":"object"}}},"required":true},"responses":{"204":{"description":"No content"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Invalid request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Authentication required"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Access denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Not found"},"413":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Payload too large"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Unsupported media type"}},"security":[{"session":[]},{"bearer":[]}],"summary":"Bind an imported source credential","tags":["imports"],"x-pb-boundary":"organization","x-pb-permission":"org:import:write","x-pb-session-only":false}},"/_pb/import-runs/{id}/rollback":{"post":{"operationId":"rollbackImportRun","parameters":[{"in":"path","name":"id","required":true,"schema":{"pattern":"^[0-7][0-9A-HJKMNP-TV-Z]{25}$","type":"string"}}],"responses":{"204":{"description":"No content"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Invalid request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Authentication required"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Access denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Not found"}},"security":[{"session":[]}],"summary":"rollback an import run","tags":["imports"],"x-pb-boundary":"organization","x-pb-permission":"org:import:approve","x-pb-session-only":true}},"/_pb/import-runs/{id}/verify":{"post":{"operationId":"verifyImportRun","parameters":[{"in":"path","name":"id","required":true,"schema":{"pattern":"^[0-7][0-9A-HJKMNP-TV-Z]{25}$","type":"string"}}],"responses":{"204":{"description":"No content"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Invalid request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Authentication required"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Access denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Not found"}},"security":[{"session":[]},{"bearer":[]}],"summary":"verify an import run","tags":["imports"],"x-pb-boundary":"organization","x-pb-permission":"org:import:write","x-pb-session-only":false}},"/_pb/me":{"get":{"operationId":"getMe","responses":{"200":{"content":{"application/json":{"schema":{"additionalProperties":false,"properties":{"organization":{"additionalProperties":false,"properties":{"name":{"type":"string"},"slug":{"type":"string"}},"required":["slug","name"],"type":"object"},"principal":{"additionalProperties":false,"properties":{"id":{"type":"string"},"kind":{"enum":["user","service","customer"],"type":"string"}},"required":["kind","id"],"type":"object"},"user":{"anyOf":[{"additionalProperties":false,"properties":{"displayName":{"type":["string","null"]},"email":{"type":["string","null"]},"id":{"type":"string"}},"required":["id","email","displayName"],"type":"object"},{"type":"null"}]}},"required":["principal","user","organization"],"type":"object"}}},"description":"Response"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Invalid request"}},"security":[],"summary":"Get the caller identity","tags":["me"],"x-pb-boundary":"authenticated","x-pb-permission":null,"x-pb-session-only":false}},"/_pb/me/permissions":{"get":{"operationId":"getMyPermissions","responses":{"200":{"content":{"application/json":{"schema":{"additionalProperties":false,"properties":{"organization":{"items":{"type":"string"},"type":"array"}},"required":["organization"],"type":"object"}}},"description":"Response"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Invalid request"}},"security":[],"summary":"Get caller organization permissions","tags":["permissions"],"x-pb-boundary":"authenticated","x-pb-permission":null,"x-pb-session-only":false}},"/_pb/me/tokens":{"get":{"operationId":"listMyTokens","parameters":[{"in":"query","name":"after","required":false,"schema":{"pattern":"^[0-7][0-9A-HJKMNP-TV-Z]{25}$","type":"string"}},{"in":"query","name":"limit","required":false,"schema":{"pattern":"^(?:[1-9][0-9]?|100)$","type":"string"}},{"in":"query","name":"status","required":false,"schema":{"enum":["active","expired","revoked"],"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"additionalProperties":false,"properties":{"items":{"items":{"additionalProperties":false,"properties":{"createdAt":{"type":"string"},"createdByUserId":{"type":["string","null"]},"expiresAt":{"type":["string","null"]},"id":{"type":"string"},"kind":{"enum":["pat","svc"],"type":"string"},"lastUsedAt":{"type":["string","null"]},"name":{"type":"string"},"projectCount":{"maximum":9007199254740991,"minimum":-9007199254740991,"type":"integer"},"projectId":{"type":["string","null"]},"projectMode":{"anyOf":[{"enum":["all","selected"],"type":"string"},{"type":"null"}]},"readOnly":{"type":"boolean"},"revokedAt":{"type":["string","null"]},"scope":{"enum":["read","write","full"],"type":"string"},"servicePrincipalId":{"type":["string","null"]},"status":{"enum":["active","expired","revoked"],"type":"string"},"userId":{"type":["string","null"]}},"required":["id","kind","name","scope","readOnly","status","projectMode","projectCount","projectId","userId","createdByUserId","servicePrincipalId","createdAt","expiresAt","lastUsedAt","revokedAt"],"type":"object"},"type":"array"},"lifetime":{"additionalProperties":false,"properties":{"personal":{"additionalProperties":false,"properties":{"defaultDays":{"maximum":9007199254740991,"minimum":-9007199254740991,"type":"integer"},"maxDays":{"maximum":9007199254740991,"minimum":-9007199254740991,"type":"integer"}},"required":["maxDays","defaultDays"],"type":"object"},"service":{"additionalProperties":false,"properties":{"defaultDays":{"maximum":9007199254740991,"minimum":-9007199254740991,"type":"integer"},"maxDays":{"maximum":9007199254740991,"minimum":-9007199254740991,"type":"integer"}},"required":["maxDays","defaultDays"],"type":"object"}},"required":["personal","service"],"type":"object"},"next":{"type":["string","null"]}},"required":["items","next","lifetime"],"type":"object"}}},"description":"Response"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Invalid request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Authentication required"}},"security":[{"session":[]}],"summary":"List the caller personal access tokens","tags":["tokens"],"x-pb-boundary":"self","x-pb-permission":null,"x-pb-session-only":true},"post":{"operationId":"createPersonalToken","requestBody":{"content":{"application/json":{"schema":{"additionalProperties":false,"properties":{"expiresAt":{"type":"string"},"lifetimeDays":{"maximum":9007199254740991,"minimum":-9007199254740991,"type":"integer"},"name":{"type":"string"},"projectIds":{"items":{"type":"string"},"maxItems":200,"type":"array"},"projectMode":{"enum":["all","selected"],"type":"string"},"readOnly":{"type":"boolean"},"scope":{"enum":["read","write","full"],"type":"string"}},"required":["name","scope","projectMode","projectIds"],"type":"object"}}},"required":true},"responses":{"201":{"content":{"application/json":{"schema":{"additionalProperties":false,"properties":{"id":{"type":"string"},"token":{"type":"string"}},"required":["id","token"],"type":"object"}}},"description":"Response"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Invalid request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Authentication required"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Reauthentication required"},"413":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Payload too large"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Unsupported media type"},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Service unavailable"}},"security":[{"session":[]}],"summary":"Issue a personal access token","tags":["tokens"],"x-pb-boundary":"self","x-pb-permission":null,"x-pb-session-only":true}},"/_pb/me/tokens/{token}":{"delete":{"operationId":"revokeMyToken","parameters":[{"in":"path","name":"token","required":true,"schema":{"pattern":"^[0-7][0-9A-HJKMNP-TV-Z]{25}$","type":"string"}}],"responses":{"204":{"description":"No content"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Invalid request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Authentication required"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Not found"},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Service unavailable"}},"security":[{"session":[]}],"summary":"Revoke a personal access token","tags":["tokens"],"x-pb-boundary":"self","x-pb-permission":null,"x-pb-session-only":true},"get":{"operationId":"getMyToken","parameters":[{"in":"path","name":"token","required":true,"schema":{"pattern":"^[0-7][0-9A-HJKMNP-TV-Z]{25}$","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"additionalProperties":false,"properties":{"createdAt":{"type":"string"},"createdByUserId":{"type":["string","null"]},"expiresAt":{"type":["string","null"]},"id":{"type":"string"},"kind":{"enum":["pat","svc"],"type":"string"},"lastUsedAt":{"type":["string","null"]},"name":{"type":"string"},"projectCount":{"maximum":9007199254740991,"minimum":-9007199254740991,"type":"integer"},"projectId":{"type":["string","null"]},"projectMode":{"anyOf":[{"enum":["all","selected"],"type":"string"},{"type":"null"}]},"readOnly":{"type":"boolean"},"revokedAt":{"type":["string","null"]},"scope":{"enum":["read","write","full"],"type":"string"},"servicePrincipalId":{"type":["string","null"]},"status":{"enum":["active","expired","revoked"],"type":"string"},"userId":{"type":["string","null"]}},"required":["id","kind","name","scope","readOnly","status","projectMode","projectCount","projectId","userId","createdByUserId","servicePrincipalId","createdAt","expiresAt","lastUsedAt","revokedAt"],"type":"object"}}},"description":"Response"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Invalid request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Authentication required"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Not found"}},"security":[{"session":[]}],"summary":"Get a personal access token","tags":["tokens"],"x-pb-boundary":"self","x-pb-permission":null,"x-pb-session-only":true}},"/_pb/organization":{"get":{"operationId":"getOrganization","responses":{"200":{"content":{"application/json":{"schema":{"additionalProperties":false,"properties":{"createdAt":{"type":"string"},"id":{"type":"string"},"name":{"type":"string"},"settings":{"additionalProperties":false,"properties":{"retentionRemovedUpstreamDays":{"maximum":9007199254740991,"minimum":-9007199254740991,"type":"integer"},"tokenDefaultExpiryDays":{"maximum":9007199254740991,"minimum":-9007199254740991,"type":"integer"},"tokenMaxLifetimeDays":{"additionalProperties":false,"properties":{"personal":{"maximum":9007199254740991,"minimum":-9007199254740991,"type":"integer"},"service":{"maximum":9007199254740991,"minimum":-9007199254740991,"type":"integer"}},"required":["personal","service"],"type":"object"}},"required":["retentionRemovedUpstreamDays","tokenDefaultExpiryDays","tokenMaxLifetimeDays"],"type":"object"},"slug":{"type":"string"},"updatedAt":{"type":"string"}},"required":["id","slug","name","settings","createdAt","updatedAt"],"type":"object"}}},"description":"Response"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Invalid request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Authentication required"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Access denied"}},"security":[{"session":[]},{"bearer":[]}],"summary":"Get the organization","tags":["organization"],"x-pb-boundary":"organization","x-pb-permission":"org:read","x-pb-session-only":false}},"/_pb/packages":{"get":{"operationId":"listPackages","parameters":[{"in":"query","name":"after","required":false,"schema":{"maxLength":464,"pattern":"^(?:composer|npm):[\\\\s\\\\S]+:[0-7][0-9A-HJKMNP-TV-Z]{25}$","type":"string"}},{"in":"query","name":"ecosystem","required":false,"schema":{"enum":["composer","npm"],"type":"string"}},{"in":"query","name":"limit","required":false,"schema":{"pattern":"^(?:[1-9][0-9]?|100)$","type":"string"}},{"in":"query","name":"project","required":false,"schema":{"pattern":"^[0-7][0-9A-HJKMNP-TV-Z]{25}$","type":"string"}},{"in":"query","name":"q","required":false,"schema":{"maxLength":100,"minLength":1,"type":"string"}},{"in":"query","name":"source","required":false,"schema":{"pattern":"^[0-7][0-9A-HJKMNP-TV-Z]{25}$","type":"string"}},{"in":"query","name":"status","required":false,"schema":{"enum":["active","quarantined","tombstoned","removed_upstream"],"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"additionalProperties":false,"properties":{"items":{"items":{"additionalProperties":false,"properties":{"ecosystem":{"enum":["composer","npm"],"type":"string"},"id":{"pattern":"^[0-7][0-9A-HJKMNP-TV-Z]{25}$","type":"string"},"lastSyncedAt":{"type":["string","null"]},"latestVersion":{"type":["string","null"]},"name":{"type":"string"},"source":{"additionalProperties":false,"properties":{"id":{"pattern":"^[0-7][0-9A-HJKMNP-TV-Z]{25}$","type":"string"},"name":{"type":"string"},"projectId":{"anyOf":[{"pattern":"^[0-7][0-9A-HJKMNP-TV-Z]{25}$","type":"string"},{"type":"null"}]},"type":{"enum":["vcs","composer_repository","npm_registry","packagist_proxy","npmjs_proxy","hosted"],"type":"string"}},"required":["id","name","type","projectId"],"type":"object"},"status":{"enum":["active","quarantined","tombstoned","removed_upstream"],"type":"string"},"versionCount":{"maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["id","ecosystem","name","latestVersion","status","source","versionCount","lastSyncedAt"],"type":"object"},"type":"array"},"next":{"anyOf":[{"maxLength":464,"pattern":"^(?:composer|npm):[\\\\s\\\\S]+:[0-7][0-9A-HJKMNP-TV-Z]{25}$","type":"string"},{"type":"null"}]}},"required":["items","next"],"type":"object"}}},"description":"Response"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Invalid request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Authentication required"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Access denied"}},"security":[{"session":[]},{"bearer":[]}],"summary":"List packages","tags":["packages"],"x-pb-boundary":"organization","x-pb-permission":"org:sources:read","x-pb-session-only":false}},"/_pb/packages/{package}/versions":{"get":{"operationId":"listPackageVersions","parameters":[{"in":"path","name":"package","required":true,"schema":{"type":"string"}},{"in":"query","name":"after","required":false,"schema":{"pattern":"^[0-7][0-9A-HJKMNP-TV-Z]{25}$","type":"string"}},{"in":"query","name":"limit","required":false,"schema":{"pattern":"^(?:[1-9][0-9]?|100)$","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"additionalProperties":false,"properties":{"items":{"items":{"additionalProperties":false,"properties":{"id":{"pattern":"^[0-7][0-9A-HJKMNP-TV-Z]{25}$","type":"string"},"publishedAt":{"type":"string"},"removedUpstreamAt":{"type":["string","null"]},"revision":{"exclusiveMinimum":0,"maximum":9007199254740991,"type":"integer"},"stability":{"enum":["dev","alpha","beta","RC","stable"],"type":"string"},"status":{"enum":["active","quarantined","tombstoned","removed_upstream","yanked"],"type":"string"},"tombstonedAt":{"type":["string","null"]},"version":{"type":"string"},"vulnerability":{"additionalProperties":false,"properties":{"advisories":{"items":{"additionalProperties":false,"properties":{"detailsFetchedAt":{"type":["string","null"]},"id":{"type":"string"},"severity":{"additionalProperties":false,"properties":{"entries":{"items":{"additionalProperties":false,"properties":{"score":{"type":"string"},"type":{"type":"string"}},"required":["type","score"],"type":"object"},"type":"array"},"level":{"enum":["critical","high","medium","low","unknown"],"type":"string"}},"required":["level","entries"],"type":"object"},"url":{"type":"null"}},"required":["id","url","severity","detailsFetchedAt"],"type":"object"},"maxItems":20,"type":"array"},"advisoriesTruncated":{"type":"boolean"},"advisoryCount":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"detailsComplete":{"type":"boolean"},"fetchedAt":{"type":["string","null"]},"lastKnownStatus":{"anyOf":[{"enum":["affected","not_affected"],"type":"string"},{"type":"null"}]},"reason":{"anyOf":[{"enum":["not_checked","disabled","unsupported_version","pending","upstream_unavailable","incomplete","expired"],"type":"string"},{"type":"null"}]},"source":{"anyOf":[{"const":"osv","type":"string"},{"type":"null"}]},"status":{"enum":["affected","not_affected","unknown","stale"],"type":"string"}},"required":["status","reason","source","fetchedAt","lastKnownStatus","advisoryCount","advisories","detailsComplete","advisoriesTruncated"],"type":"object"}},"required":["vulnerability","id","version","stability","status","publishedAt","removedUpstreamAt","tombstonedAt","revision"],"type":"object"},"type":"array"},"next":{"anyOf":[{"pattern":"^[0-7][0-9A-HJKMNP-TV-Z]{25}$","type":"string"},{"type":"null"}]}},"required":["items","next"],"type":"object"}}},"description":"Response"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Invalid request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Authentication required"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Access denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Not found"}},"security":[{"session":[]},{"bearer":[]}],"summary":"List package versions","tags":["packages"],"x-pb-boundary":"organization","x-pb-permission":"org:sources:read","x-pb-session-only":false}},"/_pb/packages/{package}/versions/{version}/quarantine":{"post":{"operationId":"quarantinePackageVersion","parameters":[{"in":"path","name":"package","required":true,"schema":{"pattern":"^[0-7][0-9A-HJKMNP-TV-Z]{25}$","type":"string"}},{"in":"path","name":"version","required":true,"schema":{"pattern":"^[0-7][0-9A-HJKMNP-TV-Z]{25}$","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"additionalProperties":false,"properties":{},"type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"additionalProperties":false,"properties":{"id":{"pattern":"^[0-7][0-9A-HJKMNP-TV-Z]{25}$","type":"string"},"status":{"enum":["active","removed_upstream","yanked","quarantined","tombstoned"],"type":"string"}},"required":["id","status"],"type":"object"}}},"description":"Response"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Invalid request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Authentication required"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Access denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Not found"},"413":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Payload too large"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Unsupported media type"}},"security":[{"session":[]}],"summary":"quarantine a package version","tags":["packages"],"x-pb-boundary":"organization","x-pb-permission":"org:packages:manage","x-pb-session-only":true}},"/_pb/packages/{package}/versions/{version}/release":{"post":{"operationId":"releasePackageVersion","parameters":[{"in":"path","name":"package","required":true,"schema":{"pattern":"^[0-7][0-9A-HJKMNP-TV-Z]{25}$","type":"string"}},{"in":"path","name":"version","required":true,"schema":{"pattern":"^[0-7][0-9A-HJKMNP-TV-Z]{25}$","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"additionalProperties":false,"properties":{},"type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"additionalProperties":false,"properties":{"id":{"pattern":"^[0-7][0-9A-HJKMNP-TV-Z]{25}$","type":"string"},"status":{"enum":["active","removed_upstream","yanked","quarantined","tombstoned"],"type":"string"}},"required":["id","status"],"type":"object"}}},"description":"Response"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Invalid request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Authentication required"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Access denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Not found"},"413":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Payload too large"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Unsupported media type"}},"security":[{"session":[]}],"summary":"release a package version","tags":["packages"],"x-pb-boundary":"organization","x-pb-permission":"org:packages:manage","x-pb-session-only":true}},"/_pb/packages/{package}/versions/{version}/tombstone":{"post":{"operationId":"tombstonePackageVersion","parameters":[{"in":"path","name":"package","required":true,"schema":{"pattern":"^[0-7][0-9A-HJKMNP-TV-Z]{25}$","type":"string"}},{"in":"path","name":"version","required":true,"schema":{"pattern":"^[0-7][0-9A-HJKMNP-TV-Z]{25}$","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"additionalProperties":false,"properties":{},"type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"additionalProperties":false,"properties":{"id":{"pattern":"^[0-7][0-9A-HJKMNP-TV-Z]{25}$","type":"string"},"status":{"enum":["active","removed_upstream","yanked","quarantined","tombstoned"],"type":"string"}},"required":["id","status"],"type":"object"}}},"description":"Response"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Invalid request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Authentication required"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Access denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Not found"},"413":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Payload too large"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Unsupported media type"}},"security":[{"session":[]}],"summary":"tombstone a package version","tags":["packages"],"x-pb-boundary":"organization","x-pb-permission":"org:packages:manage","x-pb-session-only":true}},"/_pb/projects":{"get":{"operationId":"listProjects","parameters":[{"in":"query","name":"after","required":false,"schema":{"pattern":"^[0-7][0-9A-HJKMNP-TV-Z]{25}$","type":"string"}},{"in":"query","name":"limit","required":false,"schema":{"pattern":"^([1-9][0-9]?|100)$","type":"string"}},{"in":"query","name":"q","required":false,"schema":{"description":"Case-sensitive slug or name prefix; LIKE wildcards % and _ are refused.","maxLength":200,"minLength":1,"pattern":"^[^%_\\\\u0000-\\\\u001f\\\\u007f-\\\\u009f\\\\u2028\\\\u2029]+$","type":"string"}},{"in":"query","name":"status","required":false,"schema":{"enum":["active","archived"],"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"additionalProperties":false,"properties":{"items":{"items":{"additionalProperties":false,"properties":{"etag":{"type":"string"},"id":{"type":"string"},"name":{"type":"string"},"slug":{"type":"string"},"status":{"enum":["active","archived"],"type":"string"}},"required":["id","slug","name","status","etag"],"type":"object"},"type":"array"},"next":{"type":["string","null"]}},"required":["items","next"],"type":"object"}}},"description":"Response"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Invalid request"},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Service unavailable"}},"security":[],"summary":"List readable projects","tags":["projects"],"x-pb-boundary":"authenticated","x-pb-permission":null,"x-pb-session-only":false},"post":{"operationId":"createProject","requestBody":{"content":{"application/json":{"schema":{"additionalProperties":false,"properties":{"initialRoleId":{"pattern":"^[0-7][0-9A-HJKMNP-TV-Z]{25}$","type":"string"},"name":{"maxLength":1000,"minLength":1,"type":"string"},"requirePublishApproval":{"type":"boolean"},"slug":{"maxLength":200,"minLength":1,"type":"string"},"tokenMaxScope":{"enum":["read","write","full"],"type":"string"}},"required":["slug","name"],"type":"object"}}},"required":true},"responses":{"201":{"content":{"application/json":{"schema":{"additionalProperties":false,"properties":{"id":{"type":"string"},"slug":{"type":"string"}},"required":["id","slug"],"type":"object"}}},"description":"Response"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Invalid request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Authentication required"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Access denied; Reauthentication required"},"413":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Payload too large"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Unsupported media type"},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Service unavailable"}},"security":[{"session":[]}],"summary":"Add a project","tags":["projects"],"x-pb-boundary":"organization","x-pb-permission":"org:projects:create","x-pb-session-only":true}},"/_pb/projects/{project}":{"get":{"operationId":"getProject","parameters":[{"in":"path","name":"project","required":true,"schema":{"pattern":"^[a-z0-9](?:[a-z0-9-]{0,62}[a-z0-9])?$","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"additionalProperties":false,"properties":{"id":{"type":"string"},"name":{"type":"string"},"requirePublishApproval":{"type":"boolean"},"revision":{"maximum":9007199254740991,"minimum":-9007199254740991,"type":"integer"},"slug":{"type":"string"},"status":{"enum":["active","archived"],"type":"string"},"tokenMaxScope":{"enum":["read","write","full"],"type":"string"}},"required":["id","slug","name","status","tokenMaxScope","requirePublishApproval","revision"],"type":"object"}}},"description":"Response"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Invalid request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Authentication required"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Access denied; Reauthentication required"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Not found"},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Service unavailable"}},"security":[{"session":[]},{"bearer":[]}],"summary":"Read a project","tags":["projects"],"x-pb-boundary":"project","x-pb-permission":"project:read","x-pb-session-only":false},"patch":{"operationId":"updateProject","parameters":[{"in":"path","name":"project","required":true,"schema":{"pattern":"^[a-z0-9](?:[a-z0-9-]{0,62}[a-z0-9])?$","type":"string"}},{"in":"header","name":"If-Match","required":true,"schema":{"pattern":"^\\"r([1-9][0-9]*)\\"$","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"additionalProperties":false,"properties":{"name":{"maxLength":1000,"minLength":1,"type":"string"},"requirePublishApproval":{"type":"boolean"},"tokenMaxScope":{"enum":["read","write","full"],"type":"string"}},"type":"object"}}},"required":true},"responses":{"204":{"description":"No content"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Invalid request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Authentication required"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Access denied; Reauthentication required"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Not found"},"412":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Precondition failed"},"413":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Payload too large"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Unsupported media type"},"428":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Precondition required"},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Service unavailable"}},"security":[{"session":[]}],"summary":"Change project settings","tags":["projects"],"x-pb-boundary":"project","x-pb-permission":"project:settings:write","x-pb-session-only":true}},"/_pb/projects/{project}/archive":{"post":{"operationId":"archiveProject","parameters":[{"in":"path","name":"project","required":true,"schema":{"pattern":"^[a-z0-9](?:[a-z0-9-]{0,62}[a-z0-9])?$","type":"string"}},{"in":"header","name":"If-Match","required":true,"schema":{"pattern":"^\\"r([1-9][0-9]*)\\"$","type":"string"}}],"responses":{"204":{"description":"No content"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Invalid request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Authentication required"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Access denied; Reauthentication required"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Not found"},"412":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Precondition failed"},"428":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Precondition required"},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Service unavailable"}},"security":[{"session":[]}],"summary":"Archive a project","tags":["projects"],"x-pb-boundary":"organization","x-pb-permission":"org:projects:archive","x-pb-session-only":true}},"/_pb/projects/{project}/audit":{"get":{"operationId":"listProjectAudit","parameters":[{"in":"path","name":"project","required":true,"schema":{"maxLength":64,"minLength":1,"type":"string"}},{"in":"query","name":"action","required":false,"schema":{"maxLength":200,"minLength":1,"type":"string"}},{"in":"query","name":"actor","required":false,"schema":{"maxLength":200,"minLength":1,"type":"string"}},{"in":"query","name":"after","required":false,"schema":{"maxLength":200,"minLength":1,"type":"string"}},{"in":"query","name":"limit","required":false,"schema":{"maxLength":16,"pattern":"^[0-9]+$","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"additionalProperties":false,"properties":{"items":{"items":{"additionalProperties":false,"properties":{"action":{"type":"string"},"actor":{"additionalProperties":false,"properties":{"id":{"type":["string","null"]},"type":{"type":"string"}},"required":["type","id"],"type":"object"},"createdAt":{"type":"string"},"id":{"type":"string"},"payload":{"additionalProperties":false,"properties":{"changes":{"additionalProperties":{"additionalProperties":false,"properties":{"new":{"anyOf":[{"type":"string"},{"type":"number"},{"type":"boolean"},{"type":"null"},{"items":{"type":"string"},"type":"array"}]},"old":{"anyOf":[{"type":"string"},{"type":"number"},{"type":"boolean"},{"type":"null"},{"items":{"type":"string"},"type":"array"}]}},"type":"object"},"propertyNames":{"type":"string"},"type":"object"},"op_id":{"type":"string"},"request_id":{"type":"string"}},"type":"object"},"projectId":{"type":["string","null"]},"seq":{"maximum":9007199254740991,"minimum":-9007199254740991,"type":"integer"},"targetId":{"type":["string","null"]},"targetType":{"type":"string"}},"required":["id","seq","action","actor","targetType","targetId","projectId","createdAt","payload"],"type":"object"},"type":"array"},"next":{"type":["string","null"]}},"required":["items","next"],"type":"object"}}},"description":"Response"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Invalid request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Authentication required"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Access denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Not found"}},"security":[{"session":[]},{"bearer":[]}],"summary":"List project audit events","tags":["audit"],"x-pb-boundary":"project","x-pb-permission":"project:audit:read","x-pb-session-only":false}},"/_pb/projects/{project}/grants":{"get":{"operationId":"listProjectGrants","parameters":[{"in":"path","name":"project","required":true,"schema":{"pattern":"^[a-z0-9](?:[a-z0-9-]{0,62}[a-z0-9])?$","type":"string"}},{"in":"query","name":"after","required":false,"schema":{"pattern":"^[0-7][0-9A-HJKMNP-TV-Z]{25}$","type":"string"}},{"in":"query","name":"limit","required":false,"schema":{"pattern":"^(?:[1-9][0-9]?|100)$","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"additionalProperties":false,"properties":{"items":{"items":{"additionalProperties":false,"properties":{"createdAt":{"type":"string"},"id":{"pattern":"^[0-7][0-9A-HJKMNP-TV-Z]{25}$","type":"string"},"principal":{"anyOf":[{"additionalProperties":false,"properties":{"displayName":{"type":"string"},"email":{"type":"string"},"id":{"type":"string"},"kind":{"enum":["user","email"],"type":"string"},"visibility":{"const":"visible","type":"string"}},"required":["kind","id","displayName","email","visibility"],"type":"object"},{"additionalProperties":false,"properties":{"displayName":{"type":"string"},"id":{"type":"string"},"kind":{"enum":["user","email"],"type":"string"},"visibility":{"const":"redacted","type":"string"}},"required":["kind","id","displayName","visibility"],"type":"object"},{"additionalProperties":false,"properties":{"displayName":{"type":"string"},"groupValue":{"type":"string"},"id":{"type":"string"},"kind":{"const":"group","type":"string"},"provider":{"type":"string"},"visibility":{"const":"visible","type":"string"}},"required":["kind","id","displayName","provider","groupValue","visibility"],"type":"object"},{"additionalProperties":false,"properties":{"displayName":{"type":"string"},"id":{"type":"string"},"kind":{"const":"group","type":"string"},"provider":{"type":"string"},"visibility":{"const":"redacted","type":"string"}},"required":["kind","id","displayName","provider","visibility"],"type":"object"}]},"revision":{"exclusiveMinimum":0,"maximum":9007199254740991,"type":"integer"},"role":{"additionalProperties":false,"properties":{"id":{"pattern":"^[0-7][0-9A-HJKMNP-TV-Z]{25}$","type":"string"},"name":{"type":"string"},"permissions":{"items":{"type":"string"},"type":"array"}},"required":["id","name","permissions"],"type":"object"}},"required":["id","revision","createdAt","principal","role"],"type":"object"},"type":"array"},"next":{"anyOf":[{"pattern":"^[0-7][0-9A-HJKMNP-TV-Z]{25}$","type":"string"},{"type":"null"}]}},"required":["items","next"],"type":"object"}}},"description":"Response"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Invalid request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Authentication required"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Access denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Not found"}},"security":[{"session":[]},{"bearer":[]}],"summary":"List project grants and their principals","tags":["project-access"],"x-pb-boundary":"project","x-pb-permission":"project:grants:read","x-pb-session-only":false},"post":{"operationId":"createProjectGrant","parameters":[{"in":"path","name":"project","required":true,"schema":{"pattern":"^[a-z0-9](?:[a-z0-9-]{0,62}[a-z0-9])?$","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"additionalProperties":false,"properties":{"roleId":{"pattern":"^[0-7][0-9A-HJKMNP-TV-Z]{25}$","type":"string"},"subject":{"anyOf":[{"additionalProperties":false,"properties":{"type":{"const":"email","type":"string"},"value":{"maxLength":320,"minLength":1,"type":"string"}},"required":["type","value"],"type":"object"},{"additionalProperties":false,"properties":{"provider":{"maxLength":64,"minLength":1,"type":"string"},"type":{"const":"group","type":"string"},"value":{"maxLength":256,"minLength":1,"type":"string"}},"required":["type","provider","value"],"type":"object"}]}},"required":["subject","roleId"],"type":"object"}}},"required":true},"responses":{"201":{"content":{"application/json":{"schema":{"additionalProperties":false,"properties":{"id":{"pattern":"^[0-7][0-9A-HJKMNP-TV-Z]{25}$","type":"string"}},"required":["id"],"type":"object"}}},"description":"Response"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Invalid request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Authentication required"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Access denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Not found"},"413":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Payload too large"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Unsupported media type"},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Service unavailable"}},"security":[{"session":[]}],"summary":"Grant project access","tags":["project-access"],"x-pb-boundary":"project","x-pb-permission":"project:grants:write","x-pb-session-only":true}},"/_pb/projects/{project}/grants/{grant}":{"delete":{"operationId":"revokeProjectGrant","parameters":[{"in":"path","name":"project","required":true,"schema":{"pattern":"^[a-z0-9](?:[a-z0-9-]{0,62}[a-z0-9])?$","type":"string"}},{"in":"path","name":"grant","required":true,"schema":{"pattern":"^[0-7][0-9A-HJKMNP-TV-Z]{25}$","type":"string"}},{"in":"header","name":"If-Match","required":true,"schema":{"pattern":"^\\"r([1-9][0-9]*)\\"$","type":"string"}}],"responses":{"204":{"description":"No content"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Invalid request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Authentication required"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Access denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Not found"},"412":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Precondition failed"},"428":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Precondition required"},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Service unavailable"}},"security":[{"session":[]}],"summary":"Revoke a project grant","tags":["project-access"],"x-pb-boundary":"project","x-pb-permission":"project:grants:write","x-pb-session-only":true},"patch":{"operationId":"changeProjectGrant","parameters":[{"in":"path","name":"project","required":true,"schema":{"pattern":"^[a-z0-9](?:[a-z0-9-]{0,62}[a-z0-9])?$","type":"string"}},{"in":"path","name":"grant","required":true,"schema":{"pattern":"^[0-7][0-9A-HJKMNP-TV-Z]{25}$","type":"string"}},{"in":"header","name":"If-Match","required":true,"schema":{"pattern":"^\\"r([1-9][0-9]*)\\"$","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"additionalProperties":false,"properties":{"roleId":{"pattern":"^[0-7][0-9A-HJKMNP-TV-Z]{25}$","type":"string"}},"required":["roleId"],"type":"object"}}},"required":true},"responses":{"204":{"description":"No content"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Invalid request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Authentication required"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Access denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Not found"},"412":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Precondition failed"},"413":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Payload too large"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Unsupported media type"},"428":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Precondition required"},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Service unavailable"}},"security":[{"session":[]}],"summary":"Change the role of a project grant","tags":["project-access"],"x-pb-boundary":"project","x-pb-permission":"project:grants:write","x-pb-session-only":true}},"/_pb/projects/{project}/packages":{"get":{"operationId":"listProjectPackages","parameters":[{"in":"path","name":"project","required":true,"schema":{"pattern":"^[a-z0-9](?:[a-z0-9-]{0,62}[a-z0-9])?$","type":"string"}},{"in":"query","name":"after","required":false,"schema":{"maxLength":437,"pattern":"^(?:composer|npm):[\\\\s\\\\S]+$","type":"string"}},{"in":"query","name":"ecosystem","required":false,"schema":{"enum":["composer","npm"],"type":"string"}},{"in":"query","name":"limit","required":false,"schema":{"pattern":"^(?:[1-9][0-9]?|100)$","type":"string"}},{"in":"query","name":"q","required":false,"schema":{"maxLength":100,"minLength":1,"type":"string"}},{"in":"query","name":"source","required":false,"schema":{"pattern":"^[0-7][0-9A-HJKMNP-TV-Z]{25}$","type":"string"}},{"in":"query","name":"status","required":false,"schema":{"enum":["active","quarantined","tombstoned","removed_upstream"],"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"additionalProperties":false,"properties":{"items":{"items":{"additionalProperties":false,"properties":{"ecosystem":{"enum":["composer","npm"],"type":"string"},"id":{"pattern":"^[0-7][0-9A-HJKMNP-TV-Z]{25}$","type":"string"},"lastSyncedAt":{"type":["string","null"]},"latestVersion":{"type":["string","null"]},"name":{"type":"string"},"source":{"additionalProperties":false,"properties":{"id":{"pattern":"^[0-7][0-9A-HJKMNP-TV-Z]{25}$","type":"string"},"name":{"type":"string"},"projectId":{"anyOf":[{"pattern":"^[0-7][0-9A-HJKMNP-TV-Z]{25}$","type":"string"},{"type":"null"}]},"type":{"enum":["vcs","composer_repository","npm_registry","packagist_proxy","npmjs_proxy","hosted"],"type":"string"}},"required":["id","name","type","projectId"],"type":"object"},"status":{"enum":["active","quarantined","tombstoned","removed_upstream"],"type":"string"},"versionCount":{"maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["id","ecosystem","name","latestVersion","status","source","versionCount","lastSyncedAt"],"type":"object"},"type":"array"},"next":{"anyOf":[{"maxLength":437,"pattern":"^(?:composer|npm):[\\\\s\\\\S]+$","type":"string"},{"type":"null"}]}},"required":["items","next"],"type":"object"}}},"description":"Response"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Invalid request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Authentication required"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Access denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Not found"}},"security":[{"session":[]},{"bearer":[]}],"summary":"List packages","tags":["packages"],"x-pb-boundary":"project","x-pb-permission":"project:packages:read","x-pb-session-only":false}},"/_pb/projects/{project}/packages/{package}/versions":{"get":{"operationId":"listProjectPackageVersions","parameters":[{"in":"path","name":"project","required":true,"schema":{"pattern":"^[a-z0-9](?:[a-z0-9-]{0,62}[a-z0-9])?$","type":"string"}},{"in":"path","name":"package","required":true,"schema":{"type":"string"}},{"in":"query","name":"after","required":false,"schema":{"pattern":"^[0-7][0-9A-HJKMNP-TV-Z]{25}$","type":"string"}},{"in":"query","name":"limit","required":false,"schema":{"pattern":"^(?:[1-9][0-9]?|100)$","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"additionalProperties":false,"properties":{"items":{"items":{"additionalProperties":false,"properties":{"id":{"pattern":"^[0-7][0-9A-HJKMNP-TV-Z]{25}$","type":"string"},"publishedAt":{"type":"string"},"removedUpstreamAt":{"type":["string","null"]},"revision":{"exclusiveMinimum":0,"maximum":9007199254740991,"type":"integer"},"stability":{"enum":["dev","alpha","beta","RC","stable"],"type":"string"},"status":{"enum":["active","quarantined","tombstoned","removed_upstream","yanked"],"type":"string"},"tombstonedAt":{"type":["string","null"]},"version":{"type":"string"},"vulnerability":{"additionalProperties":false,"properties":{"advisories":{"items":{"additionalProperties":false,"properties":{"detailsFetchedAt":{"type":["string","null"]},"id":{"type":"string"},"severity":{"additionalProperties":false,"properties":{"entries":{"items":{"additionalProperties":false,"properties":{"score":{"type":"string"},"type":{"type":"string"}},"required":["type","score"],"type":"object"},"type":"array"},"level":{"enum":["critical","high","medium","low","unknown"],"type":"string"}},"required":["level","entries"],"type":"object"},"url":{"type":"null"}},"required":["id","url","severity","detailsFetchedAt"],"type":"object"},"maxItems":20,"type":"array"},"advisoriesTruncated":{"type":"boolean"},"advisoryCount":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"detailsComplete":{"type":"boolean"},"fetchedAt":{"type":["string","null"]},"lastKnownStatus":{"anyOf":[{"enum":["affected","not_affected"],"type":"string"},{"type":"null"}]},"reason":{"anyOf":[{"enum":["not_checked","disabled","unsupported_version","pending","upstream_unavailable","incomplete","expired"],"type":"string"},{"type":"null"}]},"source":{"anyOf":[{"const":"osv","type":"string"},{"type":"null"}]},"status":{"enum":["affected","not_affected","unknown","stale"],"type":"string"}},"required":["status","reason","source","fetchedAt","lastKnownStatus","advisoryCount","advisories","detailsComplete","advisoriesTruncated"],"type":"object"}},"required":["vulnerability","id","version","stability","status","publishedAt","removedUpstreamAt","tombstonedAt","revision"],"type":"object"},"type":"array"},"next":{"anyOf":[{"pattern":"^[0-7][0-9A-HJKMNP-TV-Z]{25}$","type":"string"},{"type":"null"}]}},"required":["items","next"],"type":"object"}}},"description":"Response"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Invalid request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Authentication required"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Access denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Not found"}},"security":[{"session":[]},{"bearer":[]}],"summary":"List package versions","tags":["packages"],"x-pb-boundary":"project","x-pb-permission":"project:packages:read","x-pb-session-only":false}},"/_pb/projects/{project}/packages/{package}/versions/{version}/quarantine":{"post":{"operationId":"quarantineProjectPackageVersion","parameters":[{"in":"path","name":"project","required":true,"schema":{"pattern":"^[a-z0-9](?:[a-z0-9-]{0,62}[a-z0-9])?$","type":"string"}},{"in":"path","name":"package","required":true,"schema":{"pattern":"^[0-7][0-9A-HJKMNP-TV-Z]{25}$","type":"string"}},{"in":"path","name":"version","required":true,"schema":{"pattern":"^[0-7][0-9A-HJKMNP-TV-Z]{25}$","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"additionalProperties":false,"properties":{},"type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"additionalProperties":false,"properties":{"id":{"pattern":"^[0-7][0-9A-HJKMNP-TV-Z]{25}$","type":"string"},"status":{"enum":["active","removed_upstream","yanked","quarantined","tombstoned"],"type":"string"}},"required":["id","status"],"type":"object"}}},"description":"Response"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Invalid request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Authentication required"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Access denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Not found"},"413":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Payload too large"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Unsupported media type"}},"security":[{"session":[]}],"summary":"quarantine a package version","tags":["packages"],"x-pb-boundary":"project","x-pb-permission":"project:packages:manage","x-pb-session-only":true}},"/_pb/projects/{project}/packages/{package}/versions/{version}/release":{"post":{"operationId":"releaseProjectPackageVersion","parameters":[{"in":"path","name":"project","required":true,"schema":{"pattern":"^[a-z0-9](?:[a-z0-9-]{0,62}[a-z0-9])?$","type":"string"}},{"in":"path","name":"package","required":true,"schema":{"pattern":"^[0-7][0-9A-HJKMNP-TV-Z]{25}$","type":"string"}},{"in":"path","name":"version","required":true,"schema":{"pattern":"^[0-7][0-9A-HJKMNP-TV-Z]{25}$","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"additionalProperties":false,"properties":{},"type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"additionalProperties":false,"properties":{"id":{"pattern":"^[0-7][0-9A-HJKMNP-TV-Z]{25}$","type":"string"},"status":{"enum":["active","removed_upstream","yanked","quarantined","tombstoned"],"type":"string"}},"required":["id","status"],"type":"object"}}},"description":"Response"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Invalid request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Authentication required"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Access denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Not found"},"413":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Payload too large"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Unsupported media type"}},"security":[{"session":[]}],"summary":"release a package version","tags":["packages"],"x-pb-boundary":"project","x-pb-permission":"project:packages:manage","x-pb-session-only":true}},"/_pb/projects/{project}/packages/{package}/versions/{version}/tombstone":{"post":{"operationId":"tombstoneProjectPackageVersion","parameters":[{"in":"path","name":"project","required":true,"schema":{"pattern":"^[a-z0-9](?:[a-z0-9-]{0,62}[a-z0-9])?$","type":"string"}},{"in":"path","name":"package","required":true,"schema":{"pattern":"^[0-7][0-9A-HJKMNP-TV-Z]{25}$","type":"string"}},{"in":"path","name":"version","required":true,"schema":{"pattern":"^[0-7][0-9A-HJKMNP-TV-Z]{25}$","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"additionalProperties":false,"properties":{},"type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"additionalProperties":false,"properties":{"id":{"pattern":"^[0-7][0-9A-HJKMNP-TV-Z]{25}$","type":"string"},"status":{"enum":["active","removed_upstream","yanked","quarantined","tombstoned"],"type":"string"}},"required":["id","status"],"type":"object"}}},"description":"Response"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Invalid request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Authentication required"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Access denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Not found"},"413":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Payload too large"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Unsupported media type"}},"security":[{"session":[]}],"summary":"tombstone a package version","tags":["packages"],"x-pb-boundary":"project","x-pb-permission":"project:packages:manage","x-pb-session-only":true}},"/_pb/projects/{project}/permissions":{"get":{"operationId":"getMyProjectPermissions","parameters":[{"in":"path","name":"project","required":true,"schema":{"pattern":"^[a-z0-9](?:[a-z0-9-]{0,62}[a-z0-9])?$","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"additionalProperties":false,"properties":{"project":{"items":{"type":"string"},"type":"array"}},"required":["project"],"type":"object"}}},"description":"Response"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Invalid request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Authentication required"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Access denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Not found"}},"security":[{"session":[]},{"bearer":[]}],"summary":"Get caller project permissions","tags":["permissions"],"x-pb-boundary":"project","x-pb-permission":"project:read","x-pb-session-only":false}},"/_pb/projects/{project}/resolve":{"get":{"operationId":"resolveName","parameters":[{"in":"path","name":"project","required":true,"schema":{"pattern":"^[a-z0-9](?:[a-z0-9-]{0,62}[a-z0-9])?$","type":"string"}},{"in":"query","name":"name","required":true,"schema":{"maxLength":428,"minLength":1,"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"additionalProperties":false,"properties":{"candidates":{"items":{"additionalProperties":false,"properties":{"eligible":{"type":"boolean"},"projectLevel":{"type":"boolean"},"sourceId":{"pattern":"^[0-7][0-9A-HJKMNP-TV-Z]{25}$","type":"string"},"sourceName":{"type":"string"}},"required":["sourceId","sourceName","projectLevel","eligible"],"type":"object"},"type":"array"},"ecosystem":{"enum":["composer","npm"],"type":"string"},"name":{"type":"string"},"winner":{"anyOf":[{"pattern":"^[0-7][0-9A-HJKMNP-TV-Z]{25}$","type":"string"},{"type":"null"}]}},"required":["name","ecosystem","candidates","winner"],"type":"object"}}},"description":"Response"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Invalid request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Authentication required"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Access denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Not found"},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Service unavailable"}},"security":[{"session":[]},{"bearer":[]}],"summary":"Preview source resolution for a package name","tags":["sources"],"x-pb-boundary":"project","x-pb-permission":"project:sources:read","x-pb-session-only":false}},"/_pb/projects/{project}/restore":{"post":{"operationId":"restoreProject","parameters":[{"in":"path","name":"project","required":true,"schema":{"pattern":"^[a-z0-9](?:[a-z0-9-]{0,62}[a-z0-9])?$","type":"string"}},{"in":"header","name":"If-Match","required":true,"schema":{"pattern":"^\\"r([1-9][0-9]*)\\"$","type":"string"}}],"responses":{"204":{"description":"No content"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Invalid request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Authentication required"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Access denied; Reauthentication required"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Not found"},"412":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Precondition failed"},"428":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Precondition required"},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Service unavailable"}},"security":[{"session":[]}],"summary":"Restore a project","tags":["projects"],"x-pb-boundary":"organization","x-pb-permission":"org:projects:archive","x-pb-session-only":true}},"/_pb/projects/{project}/service-principals/{principal}/permissions":{"put":{"operationId":"setProjectServicePrincipalPermissions","parameters":[{"in":"path","name":"project","required":true,"schema":{"pattern":"^[a-z0-9](?:[a-z0-9-]{0,62}[a-z0-9])?$","type":"string"}},{"in":"path","name":"principal","required":true,"schema":{"pattern":"^[0-7][0-9A-HJKMNP-TV-Z]{25}$","type":"string"}},{"in":"header","name":"If-Match","required":true,"schema":{"pattern":"^\\"r([1-9][0-9]*)\\"$","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"additionalProperties":false,"properties":{"permissions":{"items":{"enum":["org:read","org:settings:write","org:users:read","org:users:write","org:roles:read","org:roles:write","org:grants:read","org:grants:write","org:projects:create","org:projects:archive","org:sources:read","org:sources:write","org:tokens:read","org:tokens:revoke","org:service-principals:write","org:packages:manage","org:import:write","org:import:approve","org:audit:read","project:read","project:settings:write","project:grants:read","project:grants:write","project:packages:read","project:packages:write","project:packages:manage","project:sources:read","project:sources:write","project:service-principals:write","project:tokens:create","project:tokens:read","project:tokens:revoke","project:audit:read"],"type":"string"},"type":"array"}},"required":["permissions"],"type":"object"}}},"required":true},"responses":{"204":{"description":"No content"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Invalid request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Authentication required"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Access denied; Reauthentication required"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Not found"},"412":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Precondition failed"},"413":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Payload too large"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Unsupported media type"},"428":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Precondition required"},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Service unavailable"}},"security":[{"session":[]}],"summary":"Set service principal permissions","tags":["service-principals"],"x-pb-boundary":"project","x-pb-permission":"project:service-principals:write","x-pb-session-only":true}},"/_pb/projects/{project}/service-principals/{principal}/restore":{"post":{"operationId":"restoreProjectServicePrincipal","parameters":[{"in":"path","name":"project","required":true,"schema":{"pattern":"^[a-z0-9](?:[a-z0-9-]{0,62}[a-z0-9])?$","type":"string"}},{"in":"path","name":"principal","required":true,"schema":{"pattern":"^[0-7][0-9A-HJKMNP-TV-Z]{25}$","type":"string"}},{"in":"header","name":"If-Match","required":true,"schema":{"pattern":"^\\"r([1-9][0-9]*)\\"$","type":"string"}}],"responses":{"204":{"description":"No content"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Invalid request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Authentication required"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Access denied; Reauthentication required"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Not found"},"412":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Precondition failed"},"428":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Precondition required"},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Service unavailable"}},"security":[{"session":[]}],"summary":"Restore service principal","tags":["service-principals"],"x-pb-boundary":"project","x-pb-permission":"project:service-principals:write","x-pb-session-only":true}},"/_pb/projects/{project}/service-principals/{principal}/suspend":{"post":{"operationId":"suspendProjectServicePrincipal","parameters":[{"in":"path","name":"project","required":true,"schema":{"pattern":"^[a-z0-9](?:[a-z0-9-]{0,62}[a-z0-9])?$","type":"string"}},{"in":"path","name":"principal","required":true,"schema":{"pattern":"^[0-7][0-9A-HJKMNP-TV-Z]{25}$","type":"string"}}],"responses":{"204":{"description":"No content"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Invalid request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Authentication required"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Access denied; Reauthentication required"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Not found"},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Service unavailable"}},"security":[{"session":[]}],"summary":"Suspend service principal","tags":["service-principals"],"x-pb-boundary":"project","x-pb-permission":"project:service-principals:write","x-pb-session-only":true}},"/_pb/projects/{project}/sources":{"get":{"operationId":"listProjectSources","parameters":[{"in":"path","name":"project","required":true,"schema":{"pattern":"^[a-z0-9](?:[a-z0-9-]{0,62}[a-z0-9])?$","type":"string"}},{"in":"query","name":"after","required":false,"schema":{"pattern":"^[0-7][0-9A-HJKMNP-TV-Z]{25}$","type":"string"}},{"in":"query","name":"limit","required":false,"schema":{"pattern":"^(?:[1-9][0-9]?|100)$","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"additionalProperties":false,"properties":{"items":{"items":{"anyOf":[{"additionalProperties":false,"properties":{"attached":{"const":true,"type":"boolean"},"config":{"anyOf":[{"additionalProperties":false,"properties":{"installationId":{"exclusiveMinimum":0,"maximum":9007199254740991,"type":"integer"},"packageName":{"type":"string"},"provider":{"enum":["github","git","ssh"],"type":"string"},"refs":{"additionalProperties":false,"properties":{"branches":{"items":{"type":"string"},"type":"array"},"tags":{"type":"boolean"}},"type":"object"},"repository":{"type":"string"}},"type":"object"},{"additionalProperties":false,"properties":{"distHosts":{"items":{"type":"string"},"type":"array"},"mirrorsFallback":{"type":"boolean"},"selection":{"additionalProperties":false,"properties":{"expandPatterns":{"type":"boolean"},"packages":{"items":{"type":"string"},"type":"array"},"patterns":{"items":{"type":"string"},"type":"array"}},"type":"object"}},"type":"object"},{"additionalProperties":false,"properties":{"distHosts":{"items":{"type":"string"},"type":"array"},"scopes":{"items":{"type":"string"},"type":"array"}},"type":"object"},{"additionalProperties":false,"properties":{"githubToken":{"type":"boolean"}},"type":"object"},{"additionalProperties":false,"properties":{},"type":"object"}]},"configComplete":{"type":"boolean"},"defaultVisibleToNewProjects":{"type":"boolean"},"ecosystem":{"enum":["composer","npm"],"type":"string"},"githubAuthentication":{"enum":["app","token"],"type":"string"},"hasCredential":{"type":"boolean"},"id":{"pattern":"^[0-7][0-9A-HJKMNP-TV-Z]{25}$","type":"string"},"lastError":{"type":["string","null"]},"lastPolledAt":{"type":["string","null"]},"lastRemovalRefusal":{"anyOf":[{"additionalProperties":false,"properties":{"absent":{"maximum":9007199254740991,"minimum":-9007199254740991,"type":"integer"},"at":{"type":"string"},"listed":{"maximum":9007199254740991,"minimum":-9007199254740991,"type":"integer"},"successful":{"maximum":9007199254740991,"minimum":-9007199254740991,"type":"integer"}},"required":["at","absent","listed","successful"],"type":"object"},{"type":"null"}]},"lastSuccessAt":{"type":["string","null"]},"name":{"type":"string"},"nextPollAt":{"type":["string","null"]},"pollIntervalSeconds":{"maximum":9007199254740991,"minimum":-9007199254740991,"type":"integer"},"precedence":{"maximum":9007199254740991,"minimum":-9007199254740991,"type":"integer"},"projectId":{"anyOf":[{"pattern":"^[0-7][0-9A-HJKMNP-TV-Z]{25}$","type":"string"},{"type":"null"}]},"removalAcceptanceArmed":{"type":"boolean"},"removalPolicy":{"enum":["flag","exclude"],"type":"string"},"retentionDaysOverride":{"anyOf":[{"maximum":9007199254740991,"minimum":0,"type":"integer"},{"type":"null"}]},"status":{"enum":["active","degraded","failing","paused"],"type":"string"},"sync":{"additionalProperties":false,"properties":{"completed":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"errors":{"items":{"additionalProperties":false,"properties":{"code":{"enum":["network","timeout","http_error","unauthorized","rate_limited","not_found","invalid_response","tag_limit_exceeded","mass_absence","too_large","policy_denied","credential_unavailable","internal"],"type":"string"},"count":{"exclusiveMinimum":0,"maximum":9007199254740991,"type":"integer"}},"required":["code","count"],"type":"object"},"type":"array"},"failed":{"description":"Terminal package failures.","maximum":9007199254740991,"minimum":0,"type":"integer"},"generation":{"type":"string"},"listing":{"type":"boolean"},"queued":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"retrying":{"description":"Failed packages queued for another attempt; disjoint from queued, running, failed and completed.","maximum":9007199254740991,"minimum":0,"type":"integer"},"running":{"maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["listing","generation","queued","running","retrying","failed","completed","errors"],"type":"object"},"type":{"enum":["vcs","composer_repository","npm_registry","packagist_proxy","npmjs_proxy","hosted"],"type":"string"},"url":{"type":["string","null"]},"userAgent":{"type":["string","null"]}},"required":["id","projectId","name","ecosystem","type","url","status","removalPolicy","pollIntervalSeconds","lastSuccessAt","lastError","lastPolledAt","nextPollAt","hasCredential","lastRemovalRefusal","removalAcceptanceArmed","attached","precedence"],"type":"object"},{"additionalProperties":false,"properties":{"attached":{"const":false,"type":"boolean"},"config":{"anyOf":[{"additionalProperties":false,"properties":{"installationId":{"exclusiveMinimum":0,"maximum":9007199254740991,"type":"integer"},"packageName":{"type":"string"},"provider":{"enum":["github","git","ssh"],"type":"string"},"refs":{"additionalProperties":false,"properties":{"branches":{"items":{"type":"string"},"type":"array"},"tags":{"type":"boolean"}},"type":"object"},"repository":{"type":"string"}},"type":"object"},{"additionalProperties":false,"properties":{"distHosts":{"items":{"type":"string"},"type":"array"},"mirrorsFallback":{"type":"boolean"},"selection":{"additionalProperties":false,"properties":{"expandPatterns":{"type":"boolean"},"packages":{"items":{"type":"string"},"type":"array"},"patterns":{"items":{"type":"string"},"type":"array"}},"type":"object"}},"type":"object"},{"additionalProperties":false,"properties":{"distHosts":{"items":{"type":"string"},"type":"array"},"scopes":{"items":{"type":"string"},"type":"array"}},"type":"object"},{"additionalProperties":false,"properties":{"githubToken":{"type":"boolean"}},"type":"object"},{"additionalProperties":false,"properties":{},"type":"object"}]},"configComplete":{"type":"boolean"},"defaultVisibleToNewProjects":{"type":"boolean"},"ecosystem":{"enum":["composer","npm"],"type":"string"},"githubAuthentication":{"enum":["app","token"],"type":"string"},"hasCredential":{"type":"boolean"},"id":{"pattern":"^[0-7][0-9A-HJKMNP-TV-Z]{25}$","type":"string"},"lastError":{"type":["string","null"]},"lastPolledAt":{"type":["string","null"]},"lastRemovalRefusal":{"anyOf":[{"additionalProperties":false,"properties":{"absent":{"maximum":9007199254740991,"minimum":-9007199254740991,"type":"integer"},"at":{"type":"string"},"listed":{"maximum":9007199254740991,"minimum":-9007199254740991,"type":"integer"},"successful":{"maximum":9007199254740991,"minimum":-9007199254740991,"type":"integer"}},"required":["at","absent","listed","successful"],"type":"object"},{"type":"null"}]},"lastSuccessAt":{"type":["string","null"]},"name":{"type":"string"},"nextPollAt":{"type":["string","null"]},"pollIntervalSeconds":{"maximum":9007199254740991,"minimum":-9007199254740991,"type":"integer"},"projectId":{"anyOf":[{"pattern":"^[0-7][0-9A-HJKMNP-TV-Z]{25}$","type":"string"},{"type":"null"}]},"removalAcceptanceArmed":{"type":"boolean"},"removalPolicy":{"enum":["flag","exclude"],"type":"string"},"retentionDaysOverride":{"anyOf":[{"maximum":9007199254740991,"minimum":0,"type":"integer"},{"type":"null"}]},"status":{"enum":["active","degraded","failing","paused"],"type":"string"},"sync":{"additionalProperties":false,"properties":{"completed":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"errors":{"items":{"additionalProperties":false,"properties":{"code":{"enum":["network","timeout","http_error","unauthorized","rate_limited","not_found","invalid_response","tag_limit_exceeded","mass_absence","too_large","policy_denied","credential_unavailable","internal"],"type":"string"},"count":{"exclusiveMinimum":0,"maximum":9007199254740991,"type":"integer"}},"required":["code","count"],"type":"object"},"type":"array"},"failed":{"description":"Terminal package failures.","maximum":9007199254740991,"minimum":0,"type":"integer"},"generation":{"type":"string"},"listing":{"type":"boolean"},"queued":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"retrying":{"description":"Failed packages queued for another attempt; disjoint from queued, running, failed and completed.","maximum":9007199254740991,"minimum":0,"type":"integer"},"running":{"maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["listing","generation","queued","running","retrying","failed","completed","errors"],"type":"object"},"type":{"enum":["vcs","composer_repository","npm_registry","packagist_proxy","npmjs_proxy","hosted"],"type":"string"},"url":{"type":["string","null"]},"userAgent":{"type":["string","null"]}},"required":["id","projectId","name","ecosystem","type","url","status","removalPolicy","pollIntervalSeconds","lastSuccessAt","lastError","lastPolledAt","nextPollAt","hasCredential","lastRemovalRefusal","removalAcceptanceArmed","attached"],"type":"object"}]},"type":"array"},"next":{"anyOf":[{"pattern":"^[0-7][0-9A-HJKMNP-TV-Z]{25}$","type":"string"},{"type":"null"}]},"vcsProviders":{"items":{"enum":["github","git","ssh"],"type":"string"},"type":"array"}},"required":["items","next","vcsProviders"],"type":"object"}}},"description":"Response"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Invalid request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Authentication required"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Access denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Not found"},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Service unavailable"}},"security":[{"session":[]},{"bearer":[]}],"summary":"List sources","tags":["sources"],"x-pb-boundary":"project","x-pb-permission":"project:sources:read","x-pb-session-only":false},"post":{"operationId":"createProjectSource","parameters":[{"in":"path","name":"project","required":true,"schema":{"pattern":"^[a-z0-9](?:[a-z0-9-]{0,62}[a-z0-9])?$","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"additionalProperties":false,"properties":{"config":{"anyOf":[{"additionalProperties":false,"properties":{"installationId":{"exclusiveMinimum":0,"maximum":9007199254740991,"type":"integer"},"packageName":{"type":"string"},"provider":{"enum":["github","git","ssh"],"type":"string"},"refs":{"additionalProperties":false,"properties":{"branches":{"items":{"type":"string"},"type":"array"},"tags":{"type":"boolean"}},"type":"object"},"repository":{"type":"string"}},"required":["provider","repository"],"type":"object"},{"additionalProperties":false,"properties":{"distHosts":{"items":{"type":"string"},"type":"array"},"mirrorsFallback":{"type":"boolean"},"selection":{"additionalProperties":false,"properties":{"expandPatterns":{"type":"boolean"},"packages":{"items":{"type":"string"},"type":"array"},"patterns":{"items":{"type":"string"},"type":"array"}},"type":"object"}},"type":"object"},{"additionalProperties":false,"properties":{"distHosts":{"items":{"type":"string"},"type":"array"},"scopes":{"items":{"type":"string"},"type":"array"}},"type":"object"},{"additionalProperties":false,"properties":{"githubToken":{"type":"boolean"}},"type":"object"},{"additionalProperties":false,"properties":{},"type":"object"}]},"defaultVisibleToNewProjects":{"type":"boolean"},"ecosystem":{"enum":["composer","npm"],"type":"string"},"name":{"minLength":1,"type":"string"},"pollIntervalSeconds":{"exclusiveMinimum":0,"maximum":9007199254740991,"type":"integer"},"removalPolicy":{"enum":["flag","exclude"],"type":"string"},"retentionDaysOverride":{"anyOf":[{"maximum":9007199254740991,"minimum":0,"type":"integer"},{"type":"null"}]},"type":{"enum":["vcs","composer_repository","npm_registry","packagist_proxy","npmjs_proxy","hosted"],"type":"string"},"url":{"anyOf":[{"maxLength":2048,"type":"string"},{"type":"null"}]},"userAgent":{"type":["string","null"]}},"required":["name","ecosystem","type"],"type":"object"}}},"required":true},"responses":{"201":{"content":{"application/json":{"schema":{"additionalProperties":false,"properties":{"id":{"pattern":"^[0-7][0-9A-HJKMNP-TV-Z]{25}$","type":"string"}},"required":["id"],"type":"object"}}},"description":"Response"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Invalid request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Authentication required"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Access denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Not found"},"413":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Payload too large"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Unsupported media type"},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Service unavailable"}},"security":[{"session":[]}],"summary":"Add a source","tags":["sources"],"x-pb-boundary":"project","x-pb-permission":"project:sources:write","x-pb-session-only":true}},"/_pb/projects/{project}/sources/order":{"put":{"operationId":"setSourceOrder","parameters":[{"in":"path","name":"project","required":true,"schema":{"pattern":"^[a-z0-9](?:[a-z0-9-]{0,62}[a-z0-9])?$","type":"string"}},{"in":"header","name":"If-Match","required":true,"schema":{"pattern":"^\\"r([1-9][0-9]*)\\"$","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"additionalProperties":false,"properties":{"sourceIds":{"items":{"pattern":"^[0-7][0-9A-HJKMNP-TV-Z]{25}$","type":"string"},"minItems":1,"type":"array"}},"required":["sourceIds"],"type":"object"}}},"required":true},"responses":{"204":{"description":"No content"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Invalid request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Authentication required"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Access denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Not found"},"412":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Precondition failed"},"413":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Payload too large"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Unsupported media type"},"428":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Precondition required"},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Service unavailable"}},"security":[{"session":[]}],"summary":"Order all attached sources","tags":["sources"],"x-pb-boundary":"project","x-pb-permission":"project:sources:write","x-pb-session-only":true}},"/_pb/projects/{project}/sources/{source}":{"patch":{"operationId":"updateProjectSource","parameters":[{"in":"path","name":"project","required":true,"schema":{"pattern":"^[a-z0-9](?:[a-z0-9-]{0,62}[a-z0-9])?$","type":"string"}},{"in":"path","name":"source","required":true,"schema":{"pattern":"^[0-7][0-9A-HJKMNP-TV-Z]{25}$","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"additionalProperties":false,"properties":{"config":{"anyOf":[{"additionalProperties":false,"properties":{"installationId":{"exclusiveMinimum":0,"maximum":9007199254740991,"type":"integer"},"packageName":{"type":"string"},"provider":{"enum":["github","git","ssh"],"type":"string"},"refs":{"additionalProperties":false,"properties":{"branches":{"items":{"type":"string"},"type":"array"},"tags":{"type":"boolean"}},"type":"object"},"repository":{"type":"string"}},"required":["provider","repository"],"type":"object"},{"additionalProperties":false,"properties":{"distHosts":{"items":{"type":"string"},"type":"array"},"mirrorsFallback":{"type":"boolean"},"selection":{"additionalProperties":false,"properties":{"expandPatterns":{"type":"boolean"},"packages":{"items":{"type":"string"},"type":"array"},"patterns":{"items":{"type":"string"},"type":"array"}},"type":"object"}},"type":"object"},{"additionalProperties":false,"properties":{"distHosts":{"items":{"type":"string"},"type":"array"},"scopes":{"items":{"type":"string"},"type":"array"}},"type":"object"},{"additionalProperties":false,"properties":{"githubToken":{"type":"boolean"}},"type":"object"},{"additionalProperties":false,"properties":{},"type":"object"}]},"defaultVisibleToNewProjects":{"type":"boolean"},"pollIntervalSeconds":{"exclusiveMinimum":0,"maximum":9007199254740991,"type":"integer"},"removalPolicy":{"enum":["flag","exclude"],"type":"string"},"retentionDaysOverride":{"anyOf":[{"maximum":9007199254740991,"minimum":0,"type":"integer"},{"type":"null"}]},"url":{"anyOf":[{"maxLength":2048,"type":"string"},{"type":"null"}]},"userAgent":{"type":["string","null"]}},"type":"object"}}},"required":true},"responses":{"204":{"description":"No content"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Invalid request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Authentication required"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Access denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Not found"},"413":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Payload too large"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Unsupported media type"},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Service unavailable"}},"security":[{"session":[]}],"summary":"Change source settings","tags":["sources"],"x-pb-boundary":"project","x-pb-permission":"project:sources:write","x-pb-session-only":true}},"/_pb/projects/{project}/sources/{source}/attachment":{"delete":{"operationId":"detachSource","parameters":[{"in":"path","name":"project","required":true,"schema":{"pattern":"^[a-z0-9](?:[a-z0-9-]{0,62}[a-z0-9])?$","type":"string"}},{"in":"path","name":"source","required":true,"schema":{"pattern":"^[0-7][0-9A-HJKMNP-TV-Z]{25}$","type":"string"}}],"responses":{"204":{"description":"No content"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Invalid request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Authentication required"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Access denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Not found"},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Service unavailable"}},"security":[{"session":[]}],"summary":"Detach a source from a project","tags":["sources"],"x-pb-boundary":"project","x-pb-permission":"project:sources:write","x-pb-session-only":true},"put":{"operationId":"attachSource","parameters":[{"in":"path","name":"project","required":true,"schema":{"pattern":"^[a-z0-9](?:[a-z0-9-]{0,62}[a-z0-9])?$","type":"string"}},{"in":"path","name":"source","required":true,"schema":{"pattern":"^[0-7][0-9A-HJKMNP-TV-Z]{25}$","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"additionalProperties":false,"properties":{"precedence":{"maximum":10000,"minimum":0,"type":"integer"}},"type":"object"}}},"required":true},"responses":{"204":{"description":"No content"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Invalid request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Authentication required"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Access denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Not found"},"413":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Payload too large"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Unsupported media type"},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Service unavailable"}},"security":[{"session":[]}],"summary":"Attach a source to a project","tags":["sources"],"x-pb-boundary":"project","x-pb-permission":"project:sources:write","x-pb-session-only":true}},"/_pb/projects/{project}/sources/{source}/credential":{"put":{"operationId":"writeProjectSourceCredential","parameters":[{"in":"path","name":"project","required":true,"schema":{"pattern":"^[a-z0-9](?:[a-z0-9-]{0,62}[a-z0-9])?$","type":"string"}},{"in":"path","name":"source","required":true,"schema":{"pattern":"^[0-7][0-9A-HJKMNP-TV-Z]{25}$","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"additionalProperties":false,"properties":{"kind":{"enum":["http_basic","bearer","header","query","github_app","npm_token","ssh_key"],"type":"string"},"material":{"maxLength":16384,"type":"string"}},"required":["kind","material"],"type":"object"}}},"required":true},"responses":{"204":{"description":"No content"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Invalid request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Authentication required"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Access denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Not found"},"413":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Payload too large"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Unsupported media type"},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Service unavailable"}},"security":[{"session":[]}],"summary":"Replace a source credential after reauthentication","tags":["sources"],"x-pb-boundary":"project","x-pb-permission":"project:sources:write","x-pb-session-only":true}},"/_pb/projects/{project}/sources/{source}/packages":{"post":{"operationId":"addProjectSourcePackage","parameters":[{"in":"path","name":"project","required":true,"schema":{"pattern":"^[a-z0-9](?:[a-z0-9-]{0,62}[a-z0-9])?$","type":"string"}},{"in":"path","name":"source","required":true,"schema":{"pattern":"^[0-7][0-9A-HJKMNP-TV-Z]{25}$","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"additionalProperties":false,"properties":{"name":{"maxLength":428,"minLength":1,"type":"string"}},"required":["name"],"type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"additionalProperties":false,"properties":{"name":{"type":"string"},"state":{"const":"present","type":"string"}},"required":["name","state"],"type":"object"}}},"description":"Response"},"202":{"content":{"application/json":{"schema":{"additionalProperties":false,"properties":{"jobId":{"type":"string"},"name":{"type":"string"},"state":{"const":"queued","type":"string"}},"required":["name","state","jobId"],"type":"object"}}},"description":"Response"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Invalid request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Authentication required"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Access denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Conflict; Source is paused; Already exists; Last holder cannot be removed; Idempotency key does not match; Already issued; Approval required"},"413":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Payload too large"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Unsupported media type"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Upstream request refused; Bad gateway"},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Service unavailable"}},"security":[{"session":[]}],"summary":"Request a package with project:sources:write from a project or organization proxy attached to the project","tags":["sources"],"x-pb-boundary":"project","x-pb-permission":"project:sources:write","x-pb-session-only":true}},"/_pb/projects/{project}/sources/{source}/pause":{"post":{"operationId":"pauseProjectSource","parameters":[{"in":"path","name":"project","required":true,"schema":{"pattern":"^[a-z0-9](?:[a-z0-9-]{0,62}[a-z0-9])?$","type":"string"}},{"in":"path","name":"source","required":true,"schema":{"pattern":"^[0-7][0-9A-HJKMNP-TV-Z]{25}$","type":"string"}}],"responses":{"204":{"description":"No content"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Invalid request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Authentication required"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Access denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Not found"},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Service unavailable"}},"security":[{"session":[]}],"summary":"Pause a source","tags":["sources"],"x-pb-boundary":"project","x-pb-permission":"project:sources:write","x-pb-session-only":true}},"/_pb/projects/{project}/sources/{source}/resume":{"post":{"operationId":"resumeProjectSource","parameters":[{"in":"path","name":"project","required":true,"schema":{"pattern":"^[a-z0-9](?:[a-z0-9-]{0,62}[a-z0-9])?$","type":"string"}},{"in":"path","name":"source","required":true,"schema":{"pattern":"^[0-7][0-9A-HJKMNP-TV-Z]{25}$","type":"string"}}],"responses":{"204":{"description":"No content"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Invalid request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Authentication required"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Access denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Not found"},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Service unavailable"}},"security":[{"session":[]}],"summary":"Resume a proxy source","tags":["sources"],"x-pb-boundary":"project","x-pb-permission":"project:sources:write","x-pb-session-only":true}},"/_pb/projects/{project}/sources/{source}/sync":{"post":{"operationId":"syncProjectSource","parameters":[{"in":"path","name":"project","required":true,"schema":{"pattern":"^[a-z0-9](?:[a-z0-9-]{0,62}[a-z0-9])?$","type":"string"}},{"in":"path","name":"source","required":true,"schema":{"pattern":"^[0-7][0-9A-HJKMNP-TV-Z]{25}$","type":"string"}}],"responses":{"202":{"description":"No content"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Invalid request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Authentication required"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Access denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Conflict; Source is paused; Already exists; Last holder cannot be removed; Idempotency key does not match; Already issued; Approval required"},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Service unavailable"}},"security":[{"session":[]}],"summary":"Request a source sync","tags":["sources"],"x-pb-boundary":"project","x-pb-permission":"project:sources:write","x-pb-session-only":true}},"/_pb/projects/{project}/tokens":{"get":{"operationId":"listProjectTokens","parameters":[{"in":"path","name":"project","required":true,"schema":{"pattern":"^[a-z0-9](?:[a-z0-9-]{0,62}[a-z0-9])?$","type":"string"}},{"in":"query","name":"after","required":false,"schema":{"pattern":"^[0-7][0-9A-HJKMNP-TV-Z]{25}$","type":"string"}},{"in":"query","name":"limit","required":false,"schema":{"pattern":"^(?:[1-9][0-9]?|100)$","type":"string"}},{"in":"query","name":"status","required":false,"schema":{"enum":["active","expired","revoked"],"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"additionalProperties":false,"properties":{"items":{"items":{"additionalProperties":false,"properties":{"createdAt":{"type":"string"},"createdByUserId":{"type":["string","null"]},"expiresAt":{"type":["string","null"]},"id":{"type":"string"},"kind":{"enum":["pat","svc"],"type":"string"},"lastUsedAt":{"type":["string","null"]},"name":{"type":"string"},"projectCount":{"maximum":9007199254740991,"minimum":-9007199254740991,"type":"integer"},"projectId":{"type":["string","null"]},"projectMode":{"anyOf":[{"enum":["all","selected"],"type":"string"},{"type":"null"}]},"readOnly":{"type":"boolean"},"revokedAt":{"type":["string","null"]},"scope":{"enum":["read","write","full"],"type":"string"},"servicePrincipalId":{"type":["string","null"]},"status":{"enum":["active","expired","revoked"],"type":"string"},"userId":{"type":["string","null"]}},"required":["id","kind","name","scope","readOnly","status","projectMode","projectCount","projectId","userId","createdByUserId","servicePrincipalId","createdAt","expiresAt","lastUsedAt","revokedAt"],"type":"object"},"type":"array"},"lifetime":{"additionalProperties":false,"properties":{"personal":{"additionalProperties":false,"properties":{"defaultDays":{"maximum":9007199254740991,"minimum":-9007199254740991,"type":"integer"},"maxDays":{"maximum":9007199254740991,"minimum":-9007199254740991,"type":"integer"}},"required":["maxDays","defaultDays"],"type":"object"},"service":{"additionalProperties":false,"properties":{"defaultDays":{"maximum":9007199254740991,"minimum":-9007199254740991,"type":"integer"},"maxDays":{"maximum":9007199254740991,"minimum":-9007199254740991,"type":"integer"}},"required":["maxDays","defaultDays"],"type":"object"}},"required":["personal","service"],"type":"object"},"next":{"type":["string","null"]}},"required":["items","next","lifetime"],"type":"object"}}},"description":"Response"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Invalid request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Authentication required"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Access denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Not found"}},"security":[{"session":[]}],"summary":"List project tokens","tags":["tokens"],"x-pb-boundary":"project","x-pb-permission":"project:tokens:read","x-pb-session-only":true},"post":{"operationId":"createProjectToken","parameters":[{"in":"path","name":"project","required":true,"schema":{"pattern":"^[a-z0-9](?:[a-z0-9-]{0,62}[a-z0-9])?$","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"additionalProperties":false,"properties":{"expiresAt":{"type":"string"},"lifetimeDays":{"maximum":9007199254740991,"minimum":-9007199254740991,"type":"integer"},"name":{"type":"string"},"readOnly":{"type":"boolean"},"scope":{"enum":["read","write","full"],"type":"string"},"servicePrincipalId":{"pattern":"^[0-7][0-9A-HJKMNP-TV-Z]{25}$","type":"string"}},"required":["servicePrincipalId","name","scope"],"type":"object"}}},"required":true},"responses":{"201":{"content":{"application/json":{"schema":{"additionalProperties":false,"properties":{"id":{"type":"string"},"token":{"type":"string"}},"required":["id","token"],"type":"object"}}},"description":"Response"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Invalid request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Authentication required"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Access denied; Reauthentication required"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Not found"},"413":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Payload too large"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Unsupported media type"},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Service unavailable"}},"security":[{"session":[]}],"summary":"Issue a project service token","tags":["tokens"],"x-pb-boundary":"project","x-pb-permission":"project:tokens:create","x-pb-session-only":true}},"/_pb/projects/{project}/tokens/{token}":{"delete":{"operationId":"revokeProjectToken","parameters":[{"in":"path","name":"project","required":true,"schema":{"pattern":"^[a-z0-9](?:[a-z0-9-]{0,62}[a-z0-9])?$","type":"string"}},{"in":"path","name":"token","required":true,"schema":{"pattern":"^[0-7][0-9A-HJKMNP-TV-Z]{25}$","type":"string"}}],"responses":{"204":{"description":"No content"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Invalid request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Authentication required"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Access denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Not found"},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Service unavailable"}},"security":[{"session":[]}],"summary":"Revoke a project token","tags":["tokens"],"x-pb-boundary":"project","x-pb-permission":"project:tokens:revoke","x-pb-session-only":true},"get":{"operationId":"getProjectToken","parameters":[{"in":"path","name":"project","required":true,"schema":{"pattern":"^[a-z0-9](?:[a-z0-9-]{0,62}[a-z0-9])?$","type":"string"}},{"in":"path","name":"token","required":true,"schema":{"pattern":"^[0-7][0-9A-HJKMNP-TV-Z]{25}$","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"additionalProperties":false,"properties":{"createdAt":{"type":"string"},"createdByUserId":{"type":["string","null"]},"expiresAt":{"type":["string","null"]},"id":{"type":"string"},"kind":{"enum":["pat","svc"],"type":"string"},"lastUsedAt":{"type":["string","null"]},"name":{"type":"string"},"projectCount":{"maximum":9007199254740991,"minimum":-9007199254740991,"type":"integer"},"projectId":{"type":["string","null"]},"projectMode":{"anyOf":[{"enum":["all","selected"],"type":"string"},{"type":"null"}]},"readOnly":{"type":"boolean"},"revokedAt":{"type":["string","null"]},"scope":{"enum":["read","write","full"],"type":"string"},"servicePrincipalId":{"type":["string","null"]},"status":{"enum":["active","expired","revoked"],"type":"string"},"userId":{"type":["string","null"]}},"required":["id","kind","name","scope","readOnly","status","projectMode","projectCount","projectId","userId","createdByUserId","servicePrincipalId","createdAt","expiresAt","lastUsedAt","revokedAt"],"type":"object"}}},"description":"Response"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Invalid request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Authentication required"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Access denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Not found"}},"security":[{"session":[]}],"summary":"Get a project token","tags":["tokens"],"x-pb-boundary":"project","x-pb-permission":"project:tokens:read","x-pb-session-only":true}},"/_pb/projects/{project}/tokens/{token}/rotate":{"post":{"operationId":"rotateProjectToken","parameters":[{"in":"path","name":"project","required":true,"schema":{"pattern":"^[a-z0-9](?:[a-z0-9-]{0,62}[a-z0-9])?$","type":"string"}},{"in":"path","name":"token","required":true,"schema":{"pattern":"^[0-7][0-9A-HJKMNP-TV-Z]{25}$","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"additionalProperties":false,"properties":{"expiresAt":{"type":"string"},"lifetimeDays":{"maximum":9007199254740991,"minimum":-9007199254740991,"type":"integer"},"name":{"type":"string"},"overlapDays":{"anyOf":[{"const":0,"type":"number"},{"const":1,"type":"number"},{"const":7,"type":"number"}]}},"required":["overlapDays"],"type":"object"}}},"required":true},"responses":{"201":{"content":{"application/json":{"schema":{"additionalProperties":false,"properties":{"id":{"type":"string"},"replacedExpiresAt":{"type":"string"},"replacedTokenId":{"type":"string"},"token":{"type":"string"}},"required":["id","token","replacedTokenId","replacedExpiresAt"],"type":"object"}}},"description":"Response"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Invalid request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Authentication required"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Access denied; Reauthentication required"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Conflict; Source is paused; Already exists; Last holder cannot be removed; Idempotency key does not match; Already issued; Approval required"},"413":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Payload too large"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Error"},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Service unavailable"}},"security":[{"session":[]}],"summary":"Rotate a project service token","tags":["tokens"],"x-pb-boundary":"project","x-pb-permission":"project:tokens:create","x-pb-session-only":true}},"/_pb/roles":{"get":{"operationId":"listRoles","parameters":[{"in":"query","name":"after","required":false,"schema":{"pattern":"^[0-7][0-9A-HJKMNP-TV-Z]{25}$","type":"string"}},{"in":"query","name":"limit","required":false,"schema":{"pattern":"^([1-9][0-9]?|100)$","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"additionalProperties":false,"properties":{"items":{"items":{"additionalProperties":false,"properties":{"id":{"type":"string"},"isSystem":{"type":"boolean"},"key":{"type":"string"},"name":{"type":"string"},"permissions":{"items":{"type":"string"},"type":"array"},"protectsLastHolder":{"type":"boolean"},"revision":{"maximum":9007199254740991,"minimum":-9007199254740991,"type":"integer"},"scope":{"enum":["organization","project"],"type":"string"}},"required":["id","key","name","scope","isSystem","protectsLastHolder","revision","permissions"],"type":"object"},"type":"array"},"next":{"type":["string","null"]}},"required":["items","next"],"type":"object"}}},"description":"Response"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Invalid request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Authentication required"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Access denied"},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Service unavailable"}},"security":[{"session":[]},{"bearer":[]}],"summary":"List roles","tags":["roles"],"x-pb-boundary":"organization","x-pb-permission":"org:roles:read","x-pb-session-only":false},"post":{"operationId":"createRole","requestBody":{"content":{"application/json":{"schema":{"additionalProperties":false,"properties":{"key":{"pattern":"^[a-z][a-z0-9_]{0,63}$","type":"string"},"name":{"maxLength":200,"minLength":1,"type":"string"},"permissions":{"items":{"maxLength":100,"type":"string"},"maxItems":200,"type":"array"},"scope":{"enum":["organization","project"],"type":"string"}},"required":["key","name","scope","permissions"],"type":"object"}}},"required":true},"responses":{"201":{"content":{"application/json":{"schema":{"additionalProperties":false,"properties":{"id":{"pattern":"^[0-7][0-9A-HJKMNP-TV-Z]{25}$","type":"string"}},"required":["id"],"type":"object"}}},"description":"Response"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Invalid request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Authentication required"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Access denied"},"413":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Payload too large"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Unsupported media type"},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Service unavailable"}},"security":[{"session":[]}],"summary":"Add a role","tags":["roles"],"x-pb-boundary":"organization","x-pb-permission":"org:roles:write","x-pb-session-only":true}},"/_pb/roles/{role}":{"delete":{"operationId":"deleteRole","parameters":[{"in":"path","name":"role","required":true,"schema":{"pattern":"^[0-7][0-9A-HJKMNP-TV-Z]{25}$","type":"string"}},{"in":"header","name":"If-Match","required":true,"schema":{"pattern":"^\\"r([1-9][0-9]*)\\"$","type":"string"}}],"responses":{"204":{"description":"No content"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Invalid request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Authentication required"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Access denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Not found"},"412":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Precondition failed"},"428":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Precondition required"},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Service unavailable"}},"security":[{"session":[]}],"summary":"Remove a role","tags":["roles"],"x-pb-boundary":"organization","x-pb-permission":"org:roles:write","x-pb-session-only":true},"patch":{"operationId":"updateRole","parameters":[{"in":"path","name":"role","required":true,"schema":{"pattern":"^[0-7][0-9A-HJKMNP-TV-Z]{25}$","type":"string"}},{"in":"header","name":"If-Match","required":true,"schema":{"pattern":"^\\"r([1-9][0-9]*)\\"$","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"anyOf":[{"additionalProperties":false,"properties":{"name":{"maxLength":200,"minLength":1,"type":"string"}},"required":["name"],"type":"object"},{"additionalProperties":false,"properties":{"permissions":{"items":{"maxLength":100,"type":"string"},"maxItems":200,"type":"array"}},"required":["permissions"],"type":"object"}]}}},"required":true},"responses":{"204":{"description":"No content"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Invalid request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Authentication required"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Access denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Not found"},"412":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Precondition failed"},"413":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Payload too large"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Unsupported media type"},"428":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Precondition required"},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Service unavailable"}},"security":[{"session":[]}],"summary":"Rename a role or replace its permissions","tags":["roles"],"x-pb-boundary":"organization","x-pb-permission":"org:roles:write","x-pb-session-only":true}},"/_pb/service-principals":{"get":{"operationId":"listServicePrincipals","parameters":[{"in":"query","name":"after","required":false,"schema":{"pattern":"^[0-7][0-9A-HJKMNP-TV-Z]{25}$","type":"string"}},{"in":"query","name":"limit","required":false,"schema":{"pattern":"^([1-9][0-9]?|100)$","type":"string"}},{"in":"query","name":"project","required":false,"schema":{"pattern":"^[0-7][0-9A-HJKMNP-TV-Z]{25}$","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"additionalProperties":false,"properties":{"items":{"items":{"additionalProperties":false,"properties":{"createdByUserId":{"type":"string"},"id":{"pattern":"^[0-7][0-9A-HJKMNP-TV-Z]{25}$","type":"string"},"name":{"type":"string"},"permissions":{"items":{"type":"string"},"type":"array"},"projectId":{"anyOf":[{"pattern":"^[0-7][0-9A-HJKMNP-TV-Z]{25}$","type":"string"},{"type":"null"}]},"revision":{"maximum":9007199254740991,"minimum":1,"type":"integer"},"status":{"enum":["active","suspended"],"type":"string"}},"required":["id","name","projectId","createdByUserId","status","revision","permissions"],"type":"object"},"type":"array"},"next":{"anyOf":[{"pattern":"^[0-7][0-9A-HJKMNP-TV-Z]{25}$","type":"string"},{"type":"null"}]}},"required":["items","next"],"type":"object"}}},"description":"Response"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Invalid request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Authentication required"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Access denied; Reauthentication required"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Package not found; Not found"},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Service unavailable"}},"security":[{"session":[]}],"summary":"List service principals","tags":["service-principals"],"x-pb-boundary":"organization","x-pb-permission":"org:service-principals:write","x-pb-session-only":true},"post":{"operationId":"createServicePrincipal","requestBody":{"content":{"application/json":{"schema":{"additionalProperties":false,"properties":{"name":{"pattern":"^(?![\\\\s\\\\S]*(?:[\\\\u0000-\\\\u001f\\\\u007f-\\\\u009f\\\\u00ad\\\\u0600-\\\\u0605\\\\u061c\\\\u06dd\\\\u070f\\\\u0890-\\\\u0891\\\\u08e2\\\\u180e\\\\u200b-\\\\u200f\\\\u2028-\\\\u202e\\\\u2060-\\\\u2064\\\\u2066-\\\\u206f\\\\ufeff\\\\ufff9-\\\\ufffb]|\\\\ud804[\\\\udcbd\\\\udccd]|\\\\ud80d[\\\\udc30-\\\\udc3f]|\\\\ud82f[\\\\udca0-\\\\udca3]|\\\\ud834[\\\\udd73-\\\\udd7a]|\\\\udb40[\\\\udc01\\\\udc20-\\\\udc7f]))(?:[\\\\ud800-\\\\udbff][\\\\udc00-\\\\udfff]|[^\\\\ud800-\\\\udfff]){1,100}(?![\\\\s\\\\S])","type":"string"},"permissions":{"items":{"enum":["org:read","org:settings:write","org:users:read","org:users:write","org:roles:read","org:roles:write","org:grants:read","org:grants:write","org:projects:create","org:projects:archive","org:sources:read","org:sources:write","org:tokens:read","org:tokens:revoke","org:service-principals:write","org:packages:manage","org:import:write","org:import:approve","org:audit:read","project:read","project:settings:write","project:grants:read","project:grants:write","project:packages:read","project:packages:write","project:packages:manage","project:sources:read","project:sources:write","project:service-principals:write","project:tokens:create","project:tokens:read","project:tokens:revoke","project:audit:read"],"type":"string"},"type":"array"},"project":{"pattern":"^[0-7][0-9A-HJKMNP-TV-Z]{25}$","type":"string"}},"required":["name","permissions"],"type":"object"}}},"required":true},"responses":{"201":{"content":{"application/json":{"schema":{"additionalProperties":false,"properties":{"createdByUserId":{"type":"string"},"id":{"pattern":"^[0-7][0-9A-HJKMNP-TV-Z]{25}$","type":"string"},"name":{"type":"string"},"permissions":{"items":{"type":"string"},"type":"array"},"projectId":{"anyOf":[{"pattern":"^[0-7][0-9A-HJKMNP-TV-Z]{25}$","type":"string"},{"type":"null"}]},"revision":{"maximum":9007199254740991,"minimum":1,"type":"integer"},"status":{"enum":["active","suspended"],"type":"string"}},"required":["id","name","projectId","createdByUserId","status","revision","permissions"],"type":"object"}}},"description":"Response"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Invalid request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Authentication required"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Access denied; Reauthentication required"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Package not found; Not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Conflict; Source is paused; Already exists; Last holder cannot be removed; Idempotency key does not match; Already issued; Approval required"},"413":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Payload too large"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Unsupported media type"},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Service unavailable"}},"security":[{"session":[]}],"summary":"Add a service principal; requires Idempotency-Key and returns ETag","tags":["service-principals"],"x-pb-boundary":"organization","x-pb-permission":"org:service-principals:write","x-pb-session-only":true}},"/_pb/service-principals/{principal}":{"get":{"operationId":"getServicePrincipal","parameters":[{"in":"path","name":"principal","required":true,"schema":{"pattern":"^[0-7][0-9A-HJKMNP-TV-Z]{25}$","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"additionalProperties":false,"properties":{"createdByUserId":{"type":"string"},"id":{"pattern":"^[0-7][0-9A-HJKMNP-TV-Z]{25}$","type":"string"},"name":{"type":"string"},"permissions":{"items":{"type":"string"},"type":"array"},"projectId":{"anyOf":[{"pattern":"^[0-7][0-9A-HJKMNP-TV-Z]{25}$","type":"string"},{"type":"null"}]},"revision":{"maximum":9007199254740991,"minimum":1,"type":"integer"},"status":{"enum":["active","suspended"],"type":"string"}},"required":["id","name","projectId","createdByUserId","status","revision","permissions"],"type":"object"}}},"description":"Response"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Invalid request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Authentication required"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Access denied; Reauthentication required"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Not found"},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Service unavailable"}},"security":[{"session":[]}],"summary":"Read a service principal","tags":["service-principals"],"x-pb-boundary":"organization","x-pb-permission":"org:service-principals:write","x-pb-session-only":true}},"/_pb/service-principals/{principal}/permissions":{"put":{"operationId":"setServicePrincipalPermissions","parameters":[{"in":"path","name":"principal","required":true,"schema":{"pattern":"^[0-7][0-9A-HJKMNP-TV-Z]{25}$","type":"string"}},{"in":"header","name":"If-Match","required":true,"schema":{"pattern":"^\\"r([1-9][0-9]*)\\"$","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"additionalProperties":false,"properties":{"permissions":{"items":{"enum":["org:read","org:settings:write","org:users:read","org:users:write","org:roles:read","org:roles:write","org:grants:read","org:grants:write","org:projects:create","org:projects:archive","org:sources:read","org:sources:write","org:tokens:read","org:tokens:revoke","org:service-principals:write","org:packages:manage","org:import:write","org:import:approve","org:audit:read","project:read","project:settings:write","project:grants:read","project:grants:write","project:packages:read","project:packages:write","project:packages:manage","project:sources:read","project:sources:write","project:service-principals:write","project:tokens:create","project:tokens:read","project:tokens:revoke","project:audit:read"],"type":"string"},"type":"array"}},"required":["permissions"],"type":"object"}}},"required":true},"responses":{"204":{"description":"No content"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Invalid request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Authentication required"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Access denied; Reauthentication required"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Not found"},"412":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Precondition failed"},"413":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Payload too large"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Unsupported media type"},"428":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Precondition required"},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Service unavailable"}},"security":[{"session":[]}],"summary":"Set service principal permissions","tags":["service-principals"],"x-pb-boundary":"organization","x-pb-permission":"org:service-principals:write","x-pb-session-only":true}},"/_pb/service-principals/{principal}/restore":{"post":{"operationId":"restoreServicePrincipal","parameters":[{"in":"path","name":"principal","required":true,"schema":{"pattern":"^[0-7][0-9A-HJKMNP-TV-Z]{25}$","type":"string"}},{"in":"header","name":"If-Match","required":true,"schema":{"pattern":"^\\"r([1-9][0-9]*)\\"$","type":"string"}}],"responses":{"204":{"description":"No content"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Invalid request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Authentication required"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Access denied; Reauthentication required"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Not found"},"412":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Precondition failed"},"428":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Precondition required"},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Service unavailable"}},"security":[{"session":[]}],"summary":"Restore service principal","tags":["service-principals"],"x-pb-boundary":"organization","x-pb-permission":"org:service-principals:write","x-pb-session-only":true}},"/_pb/service-principals/{principal}/suspend":{"post":{"operationId":"suspendServicePrincipal","parameters":[{"in":"path","name":"principal","required":true,"schema":{"pattern":"^[0-7][0-9A-HJKMNP-TV-Z]{25}$","type":"string"}}],"responses":{"204":{"description":"No content"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Invalid request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Authentication required"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Access denied; Reauthentication required"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Not found"},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Service unavailable"}},"security":[{"session":[]}],"summary":"Suspend service principal","tags":["service-principals"],"x-pb-boundary":"organization","x-pb-permission":"org:service-principals:write","x-pb-session-only":true}},"/_pb/session":{"get":{"operationId":"getSession","responses":{"200":{"content":{"application/json":{"schema":{"additionalProperties":false,"properties":{"expiresAt":{"type":"string"},"reauthFresh":{"type":"boolean"},"user":{"additionalProperties":false,"properties":{"displayName":{"type":["string","null"]},"email":{"type":"string"},"id":{"type":"string"}},"required":["id","email","displayName"],"type":"object"}},"required":["user","reauthFresh","expiresAt"],"type":"object"}}},"description":"Response"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Invalid request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Authentication required"}},"security":[],"summary":"Get the current session","tags":["session"],"x-pb-boundary":"none","x-pb-permission":null,"x-pb-session-only":false}},"/_pb/sources":{"get":{"operationId":"listOrganizationSources","parameters":[{"in":"query","name":"after","required":false,"schema":{"pattern":"^[0-7][0-9A-HJKMNP-TV-Z]{25}$","type":"string"}},{"in":"query","name":"limit","required":false,"schema":{"pattern":"^(?:[1-9][0-9]?|100)$","type":"string"}},{"in":"query","name":"ownership","required":false,"schema":{"enum":["organization","project","all"],"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"additionalProperties":false,"properties":{"items":{"items":{"additionalProperties":false,"properties":{"attachedProjectCount":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"config":{"anyOf":[{"additionalProperties":false,"properties":{"installationId":{"exclusiveMinimum":0,"maximum":9007199254740991,"type":"integer"},"packageName":{"type":"string"},"provider":{"enum":["github","git","ssh"],"type":"string"},"refs":{"additionalProperties":false,"properties":{"branches":{"items":{"type":"string"},"type":"array"},"tags":{"type":"boolean"}},"type":"object"},"repository":{"type":"string"}},"type":"object"},{"additionalProperties":false,"properties":{"distHosts":{"items":{"type":"string"},"type":"array"},"mirrorsFallback":{"type":"boolean"},"selection":{"additionalProperties":false,"properties":{"expandPatterns":{"type":"boolean"},"packages":{"items":{"type":"string"},"type":"array"},"patterns":{"items":{"type":"string"},"type":"array"}},"type":"object"}},"type":"object"},{"additionalProperties":false,"properties":{"distHosts":{"items":{"type":"string"},"type":"array"},"scopes":{"items":{"type":"string"},"type":"array"}},"type":"object"},{"additionalProperties":false,"properties":{"githubToken":{"type":"boolean"}},"type":"object"},{"additionalProperties":false,"properties":{},"type":"object"}]},"configComplete":{"type":"boolean"},"defaultVisibleToNewProjects":{"type":"boolean"},"ecosystem":{"enum":["composer","npm"],"type":"string"},"githubAuthentication":{"enum":["app","token"],"type":"string"},"hasCredential":{"type":"boolean"},"id":{"pattern":"^[0-7][0-9A-HJKMNP-TV-Z]{25}$","type":"string"},"lastError":{"type":["string","null"]},"lastPolledAt":{"type":["string","null"]},"lastRemovalRefusal":{"anyOf":[{"additionalProperties":false,"properties":{"absent":{"maximum":9007199254740991,"minimum":-9007199254740991,"type":"integer"},"at":{"type":"string"},"listed":{"maximum":9007199254740991,"minimum":-9007199254740991,"type":"integer"},"successful":{"maximum":9007199254740991,"minimum":-9007199254740991,"type":"integer"}},"required":["at","absent","listed","successful"],"type":"object"},{"type":"null"}]},"lastSuccessAt":{"type":["string","null"]},"name":{"type":"string"},"nextPollAt":{"type":["string","null"]},"pollIntervalSeconds":{"maximum":9007199254740991,"minimum":-9007199254740991,"type":"integer"},"projectId":{"anyOf":[{"pattern":"^[0-7][0-9A-HJKMNP-TV-Z]{25}$","type":"string"},{"type":"null"}]},"projectName":{"type":["string","null"]},"removalAcceptanceArmed":{"type":"boolean"},"removalPolicy":{"enum":["flag","exclude"],"type":"string"},"retentionDaysOverride":{"anyOf":[{"maximum":9007199254740991,"minimum":0,"type":"integer"},{"type":"null"}]},"status":{"enum":["active","degraded","failing","paused"],"type":"string"},"sync":{"additionalProperties":false,"properties":{"completed":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"errors":{"items":{"additionalProperties":false,"properties":{"code":{"enum":["network","timeout","http_error","unauthorized","rate_limited","not_found","invalid_response","tag_limit_exceeded","mass_absence","too_large","policy_denied","credential_unavailable","internal"],"type":"string"},"count":{"exclusiveMinimum":0,"maximum":9007199254740991,"type":"integer"}},"required":["code","count"],"type":"object"},"type":"array"},"failed":{"description":"Terminal package failures.","maximum":9007199254740991,"minimum":0,"type":"integer"},"generation":{"type":"string"},"listing":{"type":"boolean"},"queued":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"retrying":{"description":"Failed packages queued for another attempt; disjoint from queued, running, failed and completed.","maximum":9007199254740991,"minimum":0,"type":"integer"},"running":{"maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["listing","generation","queued","running","retrying","failed","completed","errors"],"type":"object"},"type":{"enum":["vcs","composer_repository","npm_registry","packagist_proxy","npmjs_proxy","hosted"],"type":"string"},"url":{"type":["string","null"]},"userAgent":{"type":["string","null"]}},"required":["id","projectId","name","ecosystem","type","url","status","removalPolicy","pollIntervalSeconds","lastSuccessAt","lastError","lastPolledAt","nextPollAt","hasCredential","lastRemovalRefusal","removalAcceptanceArmed","projectName","attachedProjectCount"],"type":"object"},"type":"array"},"next":{"anyOf":[{"pattern":"^[0-7][0-9A-HJKMNP-TV-Z]{25}$","type":"string"},{"type":"null"}]},"vcsProviders":{"items":{"enum":["github","git","ssh"],"type":"string"},"type":"array"}},"required":["items","next","vcsProviders"],"type":"object"}}},"description":"Response"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Invalid request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Authentication required"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Access denied"},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Service unavailable"}},"security":[{"session":[]},{"bearer":[]}],"summary":"List sources","tags":["sources"],"x-pb-boundary":"organization","x-pb-permission":"org:sources:read","x-pb-session-only":false},"post":{"operationId":"createOrganizationSource","requestBody":{"content":{"application/json":{"schema":{"additionalProperties":false,"properties":{"config":{"anyOf":[{"additionalProperties":false,"properties":{"installationId":{"exclusiveMinimum":0,"maximum":9007199254740991,"type":"integer"},"packageName":{"type":"string"},"provider":{"enum":["github","git","ssh"],"type":"string"},"refs":{"additionalProperties":false,"properties":{"branches":{"items":{"type":"string"},"type":"array"},"tags":{"type":"boolean"}},"type":"object"},"repository":{"type":"string"}},"required":["provider","repository"],"type":"object"},{"additionalProperties":false,"properties":{"distHosts":{"items":{"type":"string"},"type":"array"},"mirrorsFallback":{"type":"boolean"},"selection":{"additionalProperties":false,"properties":{"expandPatterns":{"type":"boolean"},"packages":{"items":{"type":"string"},"type":"array"},"patterns":{"items":{"type":"string"},"type":"array"}},"type":"object"}},"type":"object"},{"additionalProperties":false,"properties":{"distHosts":{"items":{"type":"string"},"type":"array"},"scopes":{"items":{"type":"string"},"type":"array"}},"type":"object"},{"additionalProperties":false,"properties":{"githubToken":{"type":"boolean"}},"type":"object"},{"additionalProperties":false,"properties":{},"type":"object"}]},"defaultVisibleToNewProjects":{"type":"boolean"},"ecosystem":{"enum":["composer","npm"],"type":"string"},"name":{"minLength":1,"type":"string"},"pollIntervalSeconds":{"exclusiveMinimum":0,"maximum":9007199254740991,"type":"integer"},"removalPolicy":{"enum":["flag","exclude"],"type":"string"},"retentionDaysOverride":{"anyOf":[{"maximum":9007199254740991,"minimum":0,"type":"integer"},{"type":"null"}]},"type":{"enum":["vcs","composer_repository","npm_registry","packagist_proxy","npmjs_proxy","hosted"],"type":"string"},"url":{"anyOf":[{"maxLength":2048,"type":"string"},{"type":"null"}]},"userAgent":{"type":["string","null"]}},"required":["name","ecosystem","type"],"type":"object"}}},"required":true},"responses":{"201":{"content":{"application/json":{"schema":{"additionalProperties":false,"properties":{"id":{"pattern":"^[0-7][0-9A-HJKMNP-TV-Z]{25}$","type":"string"}},"required":["id"],"type":"object"}}},"description":"Response"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Invalid request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Authentication required"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Access denied"},"413":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Payload too large"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Unsupported media type"},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Service unavailable"}},"security":[{"session":[]}],"summary":"Add a source","tags":["sources"],"x-pb-boundary":"organization","x-pb-permission":"org:sources:write","x-pb-session-only":true}},"/_pb/sources/{source}":{"patch":{"operationId":"updateOrganizationSource","parameters":[{"in":"path","name":"source","required":true,"schema":{"pattern":"^[0-7][0-9A-HJKMNP-TV-Z]{25}$","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"additionalProperties":false,"properties":{"config":{"anyOf":[{"additionalProperties":false,"properties":{"installationId":{"exclusiveMinimum":0,"maximum":9007199254740991,"type":"integer"},"packageName":{"type":"string"},"provider":{"enum":["github","git","ssh"],"type":"string"},"refs":{"additionalProperties":false,"properties":{"branches":{"items":{"type":"string"},"type":"array"},"tags":{"type":"boolean"}},"type":"object"},"repository":{"type":"string"}},"required":["provider","repository"],"type":"object"},{"additionalProperties":false,"properties":{"distHosts":{"items":{"type":"string"},"type":"array"},"mirrorsFallback":{"type":"boolean"},"selection":{"additionalProperties":false,"properties":{"expandPatterns":{"type":"boolean"},"packages":{"items":{"type":"string"},"type":"array"},"patterns":{"items":{"type":"string"},"type":"array"}},"type":"object"}},"type":"object"},{"additionalProperties":false,"properties":{"distHosts":{"items":{"type":"string"},"type":"array"},"scopes":{"items":{"type":"string"},"type":"array"}},"type":"object"},{"additionalProperties":false,"properties":{"githubToken":{"type":"boolean"}},"type":"object"},{"additionalProperties":false,"properties":{},"type":"object"}]},"defaultVisibleToNewProjects":{"type":"boolean"},"pollIntervalSeconds":{"exclusiveMinimum":0,"maximum":9007199254740991,"type":"integer"},"removalPolicy":{"enum":["flag","exclude"],"type":"string"},"retentionDaysOverride":{"anyOf":[{"maximum":9007199254740991,"minimum":0,"type":"integer"},{"type":"null"}]},"url":{"anyOf":[{"maxLength":2048,"type":"string"},{"type":"null"}]},"userAgent":{"type":["string","null"]}},"type":"object"}}},"required":true},"responses":{"204":{"description":"No content"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Invalid request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Authentication required"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Access denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Not found"},"413":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Payload too large"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Unsupported media type"},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Service unavailable"}},"security":[{"session":[]}],"summary":"Change source settings","tags":["sources"],"x-pb-boundary":"organization","x-pb-permission":"org:sources:write","x-pb-session-only":true}},"/_pb/sources/{source}/accept-removal":{"post":{"operationId":"acceptSourceRemoval","parameters":[{"in":"path","name":"source","required":true,"schema":{"pattern":"^[0-7][0-9A-HJKMNP-TV-Z]{25}$","type":"string"}}],"responses":{"204":{"description":"No content"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Invalid request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Authentication required"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Access denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Conflict; Source is paused; Already exists; Last holder cannot be removed; Idempotency key does not match; Already issued; Approval required"},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Service unavailable"}},"security":[{"session":[]}],"summary":"Arm a one-shot acceptance of the last refused source removal","tags":["sources"],"x-pb-boundary":"organization","x-pb-permission":"org:sources:write","x-pb-session-only":true}},"/_pb/sources/{source}/credential":{"put":{"operationId":"writeOrganizationSourceCredential","parameters":[{"in":"path","name":"source","required":true,"schema":{"pattern":"^[0-7][0-9A-HJKMNP-TV-Z]{25}$","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"additionalProperties":false,"properties":{"kind":{"enum":["http_basic","bearer","header","query","github_app","npm_token","ssh_key"],"type":"string"},"material":{"maxLength":16384,"type":"string"}},"required":["kind","material"],"type":"object"}}},"required":true},"responses":{"204":{"description":"No content"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Invalid request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Authentication required"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Access denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Not found"},"413":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Payload too large"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Unsupported media type"},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Service unavailable"}},"security":[{"session":[]}],"summary":"Replace a source credential after reauthentication","tags":["sources"],"x-pb-boundary":"organization","x-pb-permission":"org:sources:write","x-pb-session-only":true}},"/_pb/sources/{source}/enable":{"post":{"operationId":"enableSource","parameters":[{"in":"path","name":"source","required":true,"schema":{"pattern":"^[0-7][0-9A-HJKMNP-TV-Z]{25}$","type":"string"}}],"responses":{"204":{"description":"No content"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Invalid request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Authentication required"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Access denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Not found"},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Service unavailable"}},"security":[{"session":[]}],"summary":"Enable a source with registered names","tags":["sources"],"x-pb-boundary":"organization","x-pb-permission":"org:sources:write","x-pb-session-only":true}},"/_pb/sources/{source}/names":{"get":{"operationId":"listRegisteredNames","parameters":[{"in":"path","name":"source","required":true,"schema":{"pattern":"^[0-7][0-9A-HJKMNP-TV-Z]{25}$","type":"string"}},{"in":"query","name":"after","required":false,"schema":{"pattern":"^[0-7][0-9A-HJKMNP-TV-Z]{25}$","type":"string"}},{"in":"query","name":"limit","required":false,"schema":{"pattern":"^(?:[1-9][0-9]?|100)$","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"additionalProperties":false,"properties":{"items":{"items":{"additionalProperties":false,"properties":{"ecosystem":{"enum":["composer","npm"],"type":"string"},"id":{"pattern":"^[0-7][0-9A-HJKMNP-TV-Z]{25}$","type":"string"},"pattern":{"type":"string"},"sourceId":{"pattern":"^[0-7][0-9A-HJKMNP-TV-Z]{25}$","type":"string"}},"required":["id","sourceId","ecosystem","pattern"],"type":"object"},"type":"array"},"next":{"anyOf":[{"pattern":"^[0-7][0-9A-HJKMNP-TV-Z]{25}$","type":"string"},{"type":"null"}]}},"required":["items","next"],"type":"object"}}},"description":"Response"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Invalid request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Authentication required"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Access denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Not found"},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Service unavailable"}},"security":[{"session":[]},{"bearer":[]}],"summary":"List registered names","tags":["sources"],"x-pb-boundary":"organization","x-pb-permission":"org:sources:read","x-pb-session-only":false},"post":{"operationId":"addRegisteredName","parameters":[{"in":"path","name":"source","required":true,"schema":{"pattern":"^[0-7][0-9A-HJKMNP-TV-Z]{25}$","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"additionalProperties":false,"properties":{"pattern":{"maxLength":50,"pattern":"^[a-z0-9._~@!/*-]+$","type":"string"}},"required":["pattern"],"type":"object"}}},"required":true},"responses":{"201":{"content":{"application/json":{"schema":{"additionalProperties":false,"properties":{"id":{"pattern":"^[0-7][0-9A-HJKMNP-TV-Z]{25}$","type":"string"}},"required":["id"],"type":"object"}}},"description":"Response"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Invalid request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Authentication required"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Access denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Not found"},"413":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Payload too large"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Unsupported media type"},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Service unavailable"}},"security":[{"session":[]}],"summary":"Register a name pattern","tags":["sources"],"x-pb-boundary":"organization","x-pb-permission":"org:sources:write","x-pb-session-only":true}},"/_pb/sources/{source}/names/{name}":{"delete":{"operationId":"removeRegisteredName","parameters":[{"in":"path","name":"source","required":true,"schema":{"pattern":"^[0-7][0-9A-HJKMNP-TV-Z]{25}$","type":"string"}},{"in":"path","name":"name","required":true,"schema":{"pattern":"^[0-7][0-9A-HJKMNP-TV-Z]{25}$","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"additionalProperties":false,"properties":{"paused":{"const":true,"type":"boolean"}},"required":["paused"],"type":"object"}}},"description":"Response"},"204":{"description":"No content"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Invalid request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Authentication required"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Access denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Not found"},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Service unavailable"}},"security":[{"session":[]}],"summary":"Remove a registered name","tags":["sources"],"x-pb-boundary":"organization","x-pb-permission":"org:sources:write","x-pb-session-only":true}},"/_pb/sources/{source}/pause":{"post":{"operationId":"pauseOrganizationSource","parameters":[{"in":"path","name":"source","required":true,"schema":{"pattern":"^[0-7][0-9A-HJKMNP-TV-Z]{25}$","type":"string"}}],"responses":{"204":{"description":"No content"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Invalid request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Authentication required"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Access denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Not found"},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Service unavailable"}},"security":[{"session":[]}],"summary":"Pause a source","tags":["sources"],"x-pb-boundary":"organization","x-pb-permission":"org:sources:write","x-pb-session-only":true}},"/_pb/sources/{source}/resume":{"post":{"operationId":"resumeOrganizationSource","parameters":[{"in":"path","name":"source","required":true,"schema":{"pattern":"^[0-7][0-9A-HJKMNP-TV-Z]{25}$","type":"string"}}],"responses":{"204":{"description":"No content"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Invalid request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Authentication required"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Access denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Not found"},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Service unavailable"}},"security":[{"session":[]}],"summary":"Resume a proxy source","tags":["sources"],"x-pb-boundary":"organization","x-pb-permission":"org:sources:write","x-pb-session-only":true}},"/_pb/sources/{source}/sync":{"post":{"operationId":"syncOrganizationSource","parameters":[{"in":"path","name":"source","required":true,"schema":{"pattern":"^[0-7][0-9A-HJKMNP-TV-Z]{25}$","type":"string"}}],"responses":{"202":{"description":"No content"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Invalid request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Authentication required"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Access denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Conflict; Source is paused; Already exists; Last holder cannot be removed; Idempotency key does not match; Already issued; Approval required"},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Service unavailable"}},"security":[{"session":[]}],"summary":"Request a source sync","tags":["sources"],"x-pb-boundary":"organization","x-pb-permission":"org:sources:write","x-pb-session-only":true}},"/_pb/tokens":{"get":{"operationId":"listTokens","parameters":[{"in":"query","name":"after","required":false,"schema":{"pattern":"^[0-7][0-9A-HJKMNP-TV-Z]{25}$","type":"string"}},{"in":"query","name":"kind","required":false,"schema":{"enum":["pat","svc"],"type":"string"}},{"in":"query","name":"limit","required":false,"schema":{"pattern":"^(?:[1-9][0-9]?|100)$","type":"string"}},{"in":"query","name":"status","required":false,"schema":{"enum":["active","expired","revoked"],"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"additionalProperties":false,"properties":{"items":{"items":{"additionalProperties":false,"properties":{"createdAt":{"type":"string"},"createdByUserId":{"type":["string","null"]},"expiresAt":{"type":["string","null"]},"id":{"type":"string"},"kind":{"enum":["pat","svc"],"type":"string"},"lastUsedAt":{"type":["string","null"]},"name":{"type":"string"},"projectCount":{"maximum":9007199254740991,"minimum":-9007199254740991,"type":"integer"},"projectId":{"type":["string","null"]},"projectMode":{"anyOf":[{"enum":["all","selected"],"type":"string"},{"type":"null"}]},"readOnly":{"type":"boolean"},"revokedAt":{"type":["string","null"]},"scope":{"enum":["read","write","full"],"type":"string"},"servicePrincipalId":{"type":["string","null"]},"status":{"enum":["active","expired","revoked"],"type":"string"},"userId":{"type":["string","null"]}},"required":["id","kind","name","scope","readOnly","status","projectMode","projectCount","projectId","userId","createdByUserId","servicePrincipalId","createdAt","expiresAt","lastUsedAt","revokedAt"],"type":"object"},"type":"array"},"lifetime":{"additionalProperties":false,"properties":{"personal":{"additionalProperties":false,"properties":{"defaultDays":{"maximum":9007199254740991,"minimum":-9007199254740991,"type":"integer"},"maxDays":{"maximum":9007199254740991,"minimum":-9007199254740991,"type":"integer"}},"required":["maxDays","defaultDays"],"type":"object"},"service":{"additionalProperties":false,"properties":{"defaultDays":{"maximum":9007199254740991,"minimum":-9007199254740991,"type":"integer"},"maxDays":{"maximum":9007199254740991,"minimum":-9007199254740991,"type":"integer"}},"required":["maxDays","defaultDays"],"type":"object"}},"required":["personal","service"],"type":"object"},"next":{"type":["string","null"]}},"required":["items","next","lifetime"],"type":"object"}}},"description":"Response"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Invalid request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Authentication required"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Access denied"}},"security":[{"session":[]}],"summary":"List organization tokens","tags":["tokens"],"x-pb-boundary":"organization","x-pb-permission":"org:tokens:read","x-pb-session-only":true},"post":{"operationId":"createOrganizationToken","requestBody":{"content":{"application/json":{"schema":{"additionalProperties":false,"properties":{"expiresAt":{"type":"string"},"lifetimeDays":{"maximum":9007199254740991,"minimum":-9007199254740991,"type":"integer"},"name":{"type":"string"},"readOnly":{"type":"boolean"},"scope":{"enum":["read","write","full"],"type":"string"},"servicePrincipalId":{"pattern":"^[0-7][0-9A-HJKMNP-TV-Z]{25}$","type":"string"}},"required":["servicePrincipalId","name","scope"],"type":"object"}}},"required":true},"responses":{"201":{"content":{"application/json":{"schema":{"additionalProperties":false,"properties":{"id":{"type":"string"},"token":{"type":"string"}},"required":["id","token"],"type":"object"}}},"description":"Response"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Invalid request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Authentication required"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Access denied; Reauthentication required"},"413":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Payload too large"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Unsupported media type"},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Service unavailable"}},"security":[{"session":[]}],"summary":"Issue an organization service token","tags":["tokens"],"x-pb-boundary":"organization","x-pb-permission":"org:service-principals:write","x-pb-session-only":true}},"/_pb/tokens/{token}":{"delete":{"operationId":"revokeToken","parameters":[{"in":"path","name":"token","required":true,"schema":{"pattern":"^[0-7][0-9A-HJKMNP-TV-Z]{25}$","type":"string"}}],"responses":{"204":{"description":"No content"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Invalid request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Authentication required"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Access denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Not found"},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Service unavailable"}},"security":[{"session":[]}],"summary":"Revoke an organization token","tags":["tokens"],"x-pb-boundary":"organization","x-pb-permission":"org:tokens:revoke","x-pb-session-only":true},"get":{"operationId":"getToken","parameters":[{"in":"path","name":"token","required":true,"schema":{"pattern":"^[0-7][0-9A-HJKMNP-TV-Z]{25}$","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"additionalProperties":false,"properties":{"createdAt":{"type":"string"},"createdByUserId":{"type":["string","null"]},"expiresAt":{"type":["string","null"]},"id":{"type":"string"},"kind":{"enum":["pat","svc"],"type":"string"},"lastUsedAt":{"type":["string","null"]},"name":{"type":"string"},"projectCount":{"maximum":9007199254740991,"minimum":-9007199254740991,"type":"integer"},"projectId":{"type":["string","null"]},"projectMode":{"anyOf":[{"enum":["all","selected"],"type":"string"},{"type":"null"}]},"readOnly":{"type":"boolean"},"revokedAt":{"type":["string","null"]},"scope":{"enum":["read","write","full"],"type":"string"},"servicePrincipalId":{"type":["string","null"]},"status":{"enum":["active","expired","revoked"],"type":"string"},"userId":{"type":["string","null"]}},"required":["id","kind","name","scope","readOnly","status","projectMode","projectCount","projectId","userId","createdByUserId","servicePrincipalId","createdAt","expiresAt","lastUsedAt","revokedAt"],"type":"object"}}},"description":"Response"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Invalid request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Authentication required"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Access denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Not found"}},"security":[{"session":[]}],"summary":"Get an organization token","tags":["tokens"],"x-pb-boundary":"organization","x-pb-permission":"org:tokens:read","x-pb-session-only":true}},"/_pb/tokens/{token}/rotate":{"post":{"operationId":"rotateToken","parameters":[{"in":"path","name":"token","required":true,"schema":{"pattern":"^[0-7][0-9A-HJKMNP-TV-Z]{25}$","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"additionalProperties":false,"properties":{"expiresAt":{"type":"string"},"lifetimeDays":{"maximum":9007199254740991,"minimum":-9007199254740991,"type":"integer"},"name":{"type":"string"},"overlapDays":{"anyOf":[{"const":0,"type":"number"},{"const":1,"type":"number"},{"const":7,"type":"number"}]}},"required":["overlapDays"],"type":"object"}}},"required":true},"responses":{"201":{"content":{"application/json":{"schema":{"additionalProperties":false,"properties":{"id":{"type":"string"},"replacedExpiresAt":{"type":"string"},"replacedTokenId":{"type":"string"},"token":{"type":"string"}},"required":["id","token","replacedTokenId","replacedExpiresAt"],"type":"object"}}},"description":"Response"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Invalid request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Authentication required"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Access denied; Reauthentication required"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Conflict; Source is paused; Already exists; Last holder cannot be removed; Idempotency key does not match; Already issued; Approval required"},"413":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Payload too large"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Error"},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Service unavailable"}},"security":[{"session":[]}],"summary":"Rotate an organization service token","tags":["tokens"],"x-pb-boundary":"organization","x-pb-permission":"org:service-principals:write","x-pb-session-only":true}},"/_pb/users":{"get":{"operationId":"listUsers","parameters":[{"in":"query","name":"after","required":false,"schema":{"pattern":"^[0-7][0-9A-HJKMNP-TV-Z]{25}$","type":"string"}},{"in":"query","name":"limit","required":false,"schema":{"pattern":"^(?:[1-9][0-9]?|100)$","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"additionalProperties":false,"properties":{"items":{"items":{"additionalProperties":false,"properties":{"createdAt":{"type":"string"},"displayName":{"type":["string","null"]},"email":{"type":"string"},"id":{"type":"string"},"lastLoginAt":{"type":["string","null"]},"status":{"enum":["active","suspended"],"type":"string"}},"required":["id","displayName","status","lastLoginAt","createdAt"],"type":"object"},"type":"array"},"next":{"type":["string","null"]}},"required":["items","next"],"type":"object"}}},"description":"Response"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Invalid request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Authentication required"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Access denied"}},"security":[{"session":[]},{"bearer":[]}],"summary":"List organization users","tags":["users"],"x-pb-boundary":"organization","x-pb-permission":"org:users:read","x-pb-session-only":false}},"/_pb/users/{user}":{"patch":{"operationId":"updateUser","parameters":[{"in":"path","name":"user","required":true,"schema":{"pattern":"^[0-7][0-9A-HJKMNP-TV-Z]{25}$","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"additionalProperties":false,"properties":{"status":{"enum":["active","suspended"],"type":"string"}},"required":["status"],"type":"object"}}},"required":true},"responses":{"204":{"description":"No content"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Invalid request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Authentication required"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Access denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Not found"},"413":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Payload too large"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Unsupported media type"},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Service unavailable"}},"security":[{"session":[]}],"summary":"Suspend or reactivate a user","tags":["users"],"x-pb-boundary":"organization","x-pb-permission":"org:users:write","x-pb-session-only":true}}}}');
53332
53381
 
53333
53382
  // packages/core/dist/mcp/limit.js
53334
53383
  var McpRateLimitConfigError = class extends Error {
@@ -53405,7 +53454,7 @@ function decodeBasic(payload2) {
53405
53454
  return void 0;
53406
53455
  }
53407
53456
  }
53408
- function redacted(token2) {
53457
+ function redacted2(token2) {
53409
53458
  const safe = { ok: true, kind: token2.kind, selector: token2.selector, reserved: token2.reserved };
53410
53459
  return Object.defineProperties(safe, {
53411
53460
  secret: { value: token2.secret, enumerable: false },
@@ -53413,7 +53462,7 @@ function redacted(token2) {
53413
53462
  });
53414
53463
  }
53415
53464
  function fromToken(scheme, token2, reason) {
53416
- return token2.ok ? { outcome: "token", scheme, token: redacted(token2) } : refuse5(reason);
53465
+ return token2.ok ? { outcome: "token", scheme, token: redacted2(token2) } : refuse5(reason);
53417
53466
  }
53418
53467
  function parseBearer(value) {
53419
53468
  return fromToken("bearer", parseToken(value), "malformed");
@@ -54119,7 +54168,7 @@ function createOsvClient(policyFetch) {
54119
54168
  else
54120
54169
  groups.set(key2, { versionIds: [tuple.versionId], query });
54121
54170
  }
54122
- const body = encoder15.encode(JSON.stringify({ queries: [...groups.values()].map((group) => group.query) }));
54171
+ const body = encoder15.encode(JSON.stringify({ queries: [...groups.values()].map((group2) => group2.query) }));
54123
54172
  if (body.length > 64 * 1024)
54124
54173
  throw new OsvError("limit");
54125
54174
  const response = record6(await request(grant, options, body));
@@ -54128,9 +54177,9 @@ function createOsvClient(policyFetch) {
54128
54177
  const results = list2(response.results, 20);
54129
54178
  if (results.length !== groups.size)
54130
54179
  throw new OsvError("protocol");
54131
- return [...groups.values()].flatMap((group, index) => {
54180
+ return [...groups.values()].flatMap((group2, index) => {
54132
54181
  const page3 = parsePage(results[index]);
54133
- return group.versionIds.map((versionId) => ({ versionId, ...page3 }));
54182
+ return group2.versionIds.map((versionId) => ({ versionId, ...page3 }));
54134
54183
  });
54135
54184
  },
54136
54185
  async detail(grant, options) {
@@ -55334,7 +55383,7 @@ function narrow(result, current) {
55334
55383
  return void 0;
55335
55384
  kept.add(entry);
55336
55385
  }
55337
- return current.filter((group) => kept.has(group));
55386
+ return current.filter((group2) => kept.has(group2));
55338
55387
  }
55339
55388
  function dataValue3(target, key2) {
55340
55389
  const descriptor = Object.getOwnPropertyDescriptor(target, key2);
@@ -55585,10 +55634,10 @@ function copyGroups(raw2) {
55585
55634
  function groupsFit(groups) {
55586
55635
  if (groups.length > MAX_GROUPS)
55587
55636
  return "too_many_groups";
55588
- for (const group of groups) {
55589
- if (LONE_SURROGATE4.test(group))
55637
+ for (const group2 of groups) {
55638
+ if (LONE_SURROGATE4.test(group2))
55590
55639
  return "invalid_identity";
55591
- const length = Array.from(group).length;
55640
+ const length = Array.from(group2).length;
55592
55641
  if (length < 1)
55593
55642
  return "invalid_identity";
55594
55643
  if (length > MAX_GROUP_NAME_LENGTH)
@@ -60890,8 +60939,8 @@ function requireLimit2(limit4) {
60890
60939
  return limit4;
60891
60940
  }
60892
60941
  function groupsJson(groups) {
60893
- for (const group of groups) {
60894
- if (typeof group !== "string" || LONE_SURROGATE6.test(group)) {
60942
+ for (const group2 of groups) {
60943
+ if (typeof group2 !== "string" || LONE_SURROGATE6.test(group2)) {
60895
60944
  throw new TypeError("every group must be a well-formed string");
60896
60945
  }
60897
60946
  }
@@ -67448,14 +67497,14 @@ function createImportVerificationStore(options) {
67448
67497
  const entity = ROLLBACK_ENTITIES[type2];
67449
67498
  if (entity === void 0)
67450
67499
  continue;
67451
- const visible = visibility(ctx, type2);
67500
+ const visible2 = visibility(ctx, type2);
67452
67501
  const extra = type2 === "source" ? ", EXISTS (SELECT 1 FROM credential ivcredential WHERE ivcredential.org_id = ? AND ivcredential.id = iventity.credential_id AND ivcredential.project_id IS iventity.project_id) AS iv_credential" : type2 === "role" ? ", (SELECT json_group_array(ivpermission.permission) FROM role_permission ivpermission WHERE ivpermission.org_id = ? AND ivpermission.role_id = iventity.id) AS iv_permissions" : "";
67453
67502
  for (let offset = 0; offset < ids2.length; offset += 40) {
67454
67503
  const keys = ids2.slice(offset, offset + 40).map((id4) => entity.key.length === 1 ? [id4] : id4.split(":")).filter((key2) => key2.length === entity.key.length);
67455
67504
  if (keys.length === 0)
67456
67505
  continue;
67457
67506
  const match3 = entity.key.length === 1 ? `iventity.${entity.key[0]} IN (${keys.map(() => "?").join(", ")})` : `(${entity.key.map((key2) => `iventity.${key2}`).join(", ")}) IN (VALUES ${keys.map(() => `(${entity.key.map(() => "?").join(", ")})`).join(", ")})`;
67458
- const rows = await executor.all(statement7(`SELECT iventity.*, (${visible.sql}) AS iv_visible${extra} FROM ${entity.table} iventity WHERE iventity.org_id = ? AND ${match3}`, ...visible.params, ...extra === "" ? [] : [ctx.orgId], ctx.orgId, ...keys.flat()));
67507
+ const rows = await executor.all(statement7(`SELECT iventity.*, (${visible2.sql}) AS iv_visible${extra} FROM ${entity.table} iventity WHERE iventity.org_id = ? AND ${match3}`, ...visible2.params, ...extra === "" ? [] : [ctx.orgId], ctx.orgId, ...keys.flat()));
67459
67508
  for (const row of rows)
67460
67509
  found3.set(`${type2}:${entity.key.map((key2) => String(row[key2])).join(":")}`, row);
67461
67510
  }
@@ -67761,8 +67810,8 @@ function dependencyNames(ecosystem6, fields2) {
67761
67810
  return { keys: [...keys], unresolvable };
67762
67811
  }
67763
67812
  const peers = Object.fromEntries(Object.entries(fields2.peerDependencies ?? {}).filter(([name]) => fields2.peerDependenciesMeta?.[name]?.optional !== true));
67764
- for (const group of [fields2.dependencies, fields2.optionalDependencies, peers]) {
67765
- for (const [name, spec] of Object.entries(group ?? {})) {
67813
+ for (const group2 of [fields2.dependencies, fields2.optionalDependencies, peers]) {
67814
+ for (const [name, spec] of Object.entries(group2 ?? {})) {
67766
67815
  const trimmed = typeof spec === "string" ? spec.trim() : null;
67767
67816
  if (trimmed === null) {
67768
67817
  unresolvable += 1;
@@ -67867,7 +67916,7 @@ async function buildClosureReport(reader3, actor, organizationPermissions, ecosy
67867
67916
  const canSeeOrganizationSources = organizationPermissions.has("org:sources:read");
67868
67917
  const ctx = { orgId: actor.orgId };
67869
67918
  const scope4 = { projectId: actor.projectId, ecosystem: ecosystem6 };
67870
- const visible = /* @__PURE__ */ new Set();
67919
+ const visible2 = /* @__PURE__ */ new Set();
67871
67920
  let after;
67872
67921
  do {
67873
67922
  const page3 = await reader3.listVisible(ctx, {
@@ -67876,7 +67925,7 @@ async function buildClosureReport(reader3, actor, organizationPermissions, ecosy
67876
67925
  ...after === void 0 ? {} : { after }
67877
67926
  });
67878
67927
  for (const item3 of page3.items)
67879
- visible.add(item3.key);
67928
+ visible2.add(item3.key);
67880
67929
  after = page3.next ?? void 0;
67881
67930
  } while (after !== void 0);
67882
67931
  const edges = [];
@@ -67905,7 +67954,7 @@ async function buildClosureReport(reader3, actor, organizationPermissions, ecosy
67905
67954
  } while (cursor4 !== void 0 && scannedVersions < MAX_SCANNED_VERSIONS);
67906
67955
  const options = { ecosystem: ecosystem6, canSeeOrganizationSources };
67907
67956
  const classes = /* @__PURE__ */ new Map();
67908
- const report = computeClosure(visible, edges, () => "not_available", options);
67957
+ const report = computeClosure(visible2, edges, () => "not_available", options);
67909
67958
  if (canSeeOrganizationSources) {
67910
67959
  const keys = report.missing.map(({ name }) => packageKey(name, { ecosystem: ecosystem6, legacyCase: ecosystem6 === "npm" }));
67911
67960
  for (let offset = 0; offset < keys.length; offset += CATALOGUE_KEY_LIST_MAX) {
@@ -67926,7 +67975,7 @@ async function buildClosureReport(reader3, actor, organizationPermissions, ecosy
67926
67975
  projectId: actor.projectId,
67927
67976
  ecosystem: ecosystem6,
67928
67977
  generatedAt: isoTimestamp(clock.now()),
67929
- scannedPackages: visible.size,
67978
+ scannedPackages: visible2.size,
67930
67979
  scannedVersions,
67931
67980
  unresolvableSpecs,
67932
67981
  truncated: report.truncated || scannedVersions >= MAX_SCANNED_VERSIONS
@@ -70747,7 +70796,7 @@ function cleanText(text11) {
70747
70796
  const kept = (text11.split("<")[0] ?? "").replace(EMAIL_TOKEN, "").trim();
70748
70797
  return kept === "" ? void 0 : kept;
70749
70798
  }
70750
- function person(value, denied) {
70799
+ function person2(value, denied) {
70751
70800
  if (typeof value === "string")
70752
70801
  return cleanText(value);
70753
70802
  if (!isRecord15(value))
@@ -70762,8 +70811,8 @@ function person(value, denied) {
70762
70811
  }
70763
70812
  function people(value, denied) {
70764
70813
  if (!Array.isArray(value))
70765
- return person(value, denied);
70766
- const list3 = value.map((entry) => person(entry, denied)).filter((entry) => entry !== void 0);
70814
+ return person2(value, denied);
70815
+ const list3 = value.map((entry) => person2(entry, denied)).filter((entry) => entry !== void 0);
70767
70816
  return list3.length === 0 ? void 0 : list3;
70768
70817
  }
70769
70818
  function bugs(value, denied) {