{
  "openapi": "3.1.1",
  "info": {
    "title": "ResourceAllocationService1",
    "version": "1.0.0"
  },
  "servers": [
    {
      "url": "https://{rootHost}/{servicesPrefix}",
      "variables": {
        "rootHost": {
          "default": "swimlane.replicon.com"
        },
        "servicesPrefix": {
          "default": "services"
        }
      }
    }
  ],
  "paths": {
    "/ResourceAllocationService1.svc/BulkGetActionsForProjectObject": {
      "post": {
        "description": "Determines view and edit resource allocation permissions for the current user on a set of projects.",
        "operationId": "BulkGetActionsForProjectObject",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "required": [
                  "projectUris"
                ],
                "properties": {
                  "projectUris": {
                    "description": "Array of project URIs to check resource allocation permissions for",
                    "allOf": [
                      {
                        "$ref": "#/components/schemas/UriArray"
                      }
                    ]
                  }
                }
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Results containing per-project permission flags and any errors for invalid URIs",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "d"
                  ],
                  "properties": {
                    "d": {
                      "$ref": "#/components/schemas/ResourceAllocationActionBulkGetResult1"
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "/ResourceAllocationService1.svc/GetPageOfProjectsAvailableForFilteringResourceUsersFilteredBySearch": {
      "post": {
        "description": "Gets a page of projects the current user has view-resource-allocation access to, for use as a filter when browsing resource users.",
        "operationId": "GetPageOfProjectsAvailableForFilteringResourceUsersFilteredBySearch",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "required": [
                  "page",
                  "pageSize"
                ],
                "properties": {
                  "page": {
                    "description": "One-based page number to retrieve",
                    "allOf": [
                      {
                        "$ref": "#/components/schemas/Int32"
                      }
                    ]
                  },
                  "pageSize": {
                    "description": "Number of projects to return per page",
                    "allOf": [
                      {
                        "$ref": "#/components/schemas/Int32"
                      }
                    ]
                  },
                  "sort": {
                    "description": "Optional sort option and direction; sorts by project name ascending when not specified",
                    "allOf": [
                      {
                        "$ref": "#/components/schemas/ProjectSortParameter1"
                      }
                    ]
                  },
                  "filter": {
                    "description": "Optional filter criteria: text search, project workflow stages, and/or a resource user to filter by recorded actuals",
                    "allOf": [
                      {
                        "$ref": "#/components/schemas/ResourceAllocationProjectFilterParameter1"
                      }
                    ]
                  }
                }
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Array of project references matching the search criteria for the requested page",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "d"
                  ],
                  "properties": {
                    "d": {
                      "$ref": "#/components/schemas/ProjectReference1Array"
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "/ResourceAllocationService1.svc/GetPageOfProjectsAvailableForResourceAllocationCreationFilteredBySearch": {
      "post": {
        "description": "Gets a page of projects the current user is allowed to create resource allocations against.",
        "operationId": "GetPageOfProjectsAvailableForResourceAllocationCreationFilteredBySearch",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "required": [
                  "page",
                  "pageSize"
                ],
                "properties": {
                  "page": {
                    "description": "One-based page number to retrieve",
                    "allOf": [
                      {
                        "$ref": "#/components/schemas/Int32"
                      }
                    ]
                  },
                  "pageSize": {
                    "description": "Number of projects to return per page",
                    "allOf": [
                      {
                        "$ref": "#/components/schemas/Int32"
                      }
                    ]
                  },
                  "filter": {
                    "description": "Optional filter criteria: text search, project workflow stages, and/or a resource user to filter by recorded actuals",
                    "allOf": [
                      {
                        "$ref": "#/components/schemas/ResourceAllocationProjectFilterParameter1"
                      }
                    ]
                  }
                }
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Array of project references matching the search criteria for the requested page",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "d"
                  ],
                  "properties": {
                    "d": {
                      "$ref": "#/components/schemas/ProjectReference1Array"
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "/ResourceAllocationService1.svc/GetPageOfClientsAvailableForFilteringResourceUsersFilteredBySearch": {
      "post": {
        "description": "Gets a page of clients from projects the current user has view-resource-allocation access to, for use as a filter on resource users.",
        "operationId": "GetPageOfClientsAvailableForFilteringResourceUsersFilteredBySearch",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "required": [
                  "page",
                  "pageSize"
                ],
                "properties": {
                  "page": {
                    "description": "One-based page number to retrieve",
                    "allOf": [
                      {
                        "$ref": "#/components/schemas/Int32"
                      }
                    ]
                  },
                  "pageSize": {
                    "description": "Number of clients to return per page",
                    "allOf": [
                      {
                        "$ref": "#/components/schemas/Int32"
                      }
                    ]
                  },
                  "search": {
                    "description": "Optional search parameters: text search and/or active/inactive status",
                    "allOf": [
                      {
                        "$ref": "#/components/schemas/ClientSearchParameter1"
                      }
                    ]
                  }
                }
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Array of client references matching the search criteria for the requested page",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "d"
                  ],
                  "properties": {
                    "d": {
                      "$ref": "#/components/schemas/ClientReference1Array"
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "/ResourceAllocationService1.svc/GetPageOfProgramsAvailableForFilteringResourceUsersFilteredBySearch": {
      "post": {
        "description": "Gets a page of programs from projects the current user has view-resource-allocation access to, for use as a filter on resource users.",
        "operationId": "GetPageOfProgramsAvailableForFilteringResourceUsersFilteredBySearch",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "required": [
                  "page",
                  "pageSize"
                ],
                "properties": {
                  "page": {
                    "description": "One-based page number to retrieve",
                    "allOf": [
                      {
                        "$ref": "#/components/schemas/Int32"
                      }
                    ]
                  },
                  "pageSize": {
                    "description": "Number of programs to return per page",
                    "allOf": [
                      {
                        "$ref": "#/components/schemas/Int32"
                      }
                    ]
                  },
                  "search": {
                    "description": "Optional search parameters: text search and/or active/archived status",
                    "allOf": [
                      {
                        "$ref": "#/components/schemas/ProgramSearchParameter1"
                      }
                    ]
                  }
                }
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Array of program references matching the search criteria for the requested page",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "d"
                  ],
                  "properties": {
                    "d": {
                      "$ref": "#/components/schemas/ProgramReference1Array"
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "/ResourceAllocationService1.svc/GetResourceUserAllocatedHoursSummarySeries": {
      "post": {
        "description": "Returns allocated hours per period for a given user, split by whether projects are in the current user's effective scope.\nFor each period, returns both hours allocated to projects within scope and hours allocated outside scope.",
        "operationId": "GetResourceUserAllocatedHoursSummarySeries",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "required": [
                  "userUri",
                  "dateRange",
                  "periodResolutionUri"
                ],
                "properties": {
                  "userUri": {
                    "description": "",
                    "allOf": [
                      {
                        "$ref": "#/components/schemas/Uri"
                      }
                    ]
                  },
                  "dateRange": {
                    "description": "",
                    "allOf": [
                      {
                        "$ref": "#/components/schemas/DateRangeDetails1"
                      }
                    ]
                  },
                  "periodResolutionUri": {
                    "description": "",
                    "allOf": [
                      {
                        "$ref": "#/components/schemas/Uri"
                      }
                    ]
                  }
                }
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "d"
                  ],
                  "properties": {
                    "d": {
                      "$ref": "#/components/schemas/ResourceUserAllocatedHoursSeriesDataPoint1Array"
                    }
                  }
                }
              }
            }
          }
        }
      }
    }
  },
  "components": {
    "schemas": {
      "UriArray": {
        "type": "array",
        "items": {
          "type": "string",
          "format": "uri"
        }
      },
      "ResourceAllocationActionBulkGetResult1": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "results": {
            "type": "array",
            "nullable": true,
            "items": {
              "$ref": "#/components/schemas/ResourceAllocationActionsForProjectResult1"
            }
          },
          "errors": {
            "type": "array",
            "nullable": true,
            "items": {
              "$ref": "#/components/schemas/ResourceAllocationActionBulkGetError1"
            }
          }
        }
      },
      "ResourceAllocationActionsForProjectResult1": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "projectUri": {
            "type": "string",
            "format": "uri",
            "nullable": true
          },
          "canViewResourceAllocation": {
            "type": "boolean"
          },
          "canEditResourceAllocation": {
            "type": "boolean"
          }
        }
      },
      "ResourceAllocationActionBulkGetError1": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "displayText": {
            "type": "string",
            "nullable": true
          },
          "projectUri": {
            "type": "string",
            "format": "uri",
            "nullable": true
          }
        }
      },
      "Int32": {
        "type": "integer",
        "format": "int32"
      },
      "ProjectSortParameter1": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "sortOptionUri": {
            "type": "string",
            "format": "uri",
            "nullable": true
          },
          "isAscending": {
            "type": "boolean"
          }
        }
      },
      "ResourceAllocationProjectFilterParameter1": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "resourceUserWithActualsUri": {
            "type": "string",
            "description": "When provided, restricts to projects where this user has entered actuals.",
            "format": "uri",
            "nullable": true
          },
          "projectWorkflowStages": {
            "type": "array",
            "nullable": true,
            "items": {
              "type": "string",
              "format": "uri"
            }
          },
          "textSearch": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/ProjectTextSearchParameter1"
              }
            ]
          }
        }
      },
      "ProjectTextSearchParameter1": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "queryText": {
            "type": "string",
            "nullable": true
          },
          "searchInDisplayText": {
            "type": "boolean"
          },
          "searchInName": {
            "type": "boolean"
          },
          "searchInDescription": {
            "type": "boolean"
          },
          "searchInCode": {
            "type": "boolean"
          }
        }
      },
      "ProjectReference1": {
        "type": "object",
        "description": "A lightweight reference to a project containing basic identification information.",
        "additionalProperties": false,
        "properties": {
          "uri": {
            "type": "string",
            "description": "Unique identifier for the project.",
            "format": "uri",
            "nullable": true
          },
          "name": {
            "type": "string",
            "description": "The name of the project.",
            "nullable": true
          },
          "displayText": {
            "type": "string",
            "description": "User-friendly display text for the project, typically shown in user interfaces.",
            "nullable": true
          },
          "slug": {
            "type": "string",
            "description": "URL-friendly identifier used in web addresses and friendly references.",
            "nullable": true
          },
          "code": {
            "type": "string",
            "description": "Project-specific code, often used as a short identifier in reports and business processes.",
            "nullable": true
          }
        }
      },
      "ProjectReference1Array": {
        "type": "array",
        "items": {
          "$ref": "#/components/schemas/ProjectReference1"
        }
      },
      "ClientSearchParameter1": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "statusOptionUri": {
            "type": "string",
            "format": "uri",
            "nullable": true
          },
          "textSearch": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/ClientTextSearchParameter1"
              }
            ]
          }
        }
      },
      "ClientTextSearchParameter1": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "queryText": {
            "type": "string",
            "nullable": true
          },
          "searchInDisplayText": {
            "type": "boolean"
          },
          "searchInName": {
            "type": "boolean"
          },
          "searchInComment": {
            "type": "boolean"
          },
          "searchInCode": {
            "type": "boolean"
          }
        }
      },
      "ClientReference1": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "uri": {
            "type": "string",
            "format": "uri",
            "nullable": true
          },
          "slug": {
            "type": "string",
            "nullable": true
          },
          "name": {
            "type": "string",
            "nullable": true
          },
          "displayText": {
            "type": "string",
            "nullable": true
          }
        }
      },
      "ClientReference1Array": {
        "type": "array",
        "items": {
          "$ref": "#/components/schemas/ClientReference1"
        }
      },
      "ProgramSearchParameter1": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "statusOptionUri": {
            "type": "string",
            "format": "uri",
            "nullable": true
          },
          "textSearch": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/ProgramTextSearchParameter1"
              }
            ]
          }
        }
      },
      "ProgramTextSearchParameter1": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "queryText": {
            "type": "string",
            "nullable": true
          },
          "searchInDisplayText": {
            "type": "boolean"
          },
          "searchInName": {
            "type": "boolean"
          }
        }
      },
      "ProgramReference1": {
        "type": "object",
        "description": "A reference to a program, containing basic identification information.",
        "additionalProperties": false,
        "properties": {
          "uri": {
            "type": "string",
            "description": "The unique URI identifier for the program.",
            "format": "uri",
            "nullable": true
          },
          "name": {
            "type": "string",
            "description": "The name of the program.",
            "nullable": true
          },
          "displayText": {
            "type": "string",
            "description": "The formatted display text for the program, suitable for UI presentation.",
            "nullable": true
          },
          "slug": {
            "type": "string",
            "description": "The URL-friendly unique identifier for the program.",
            "nullable": true
          }
        }
      },
      "ProgramReference1Array": {
        "type": "array",
        "items": {
          "$ref": "#/components/schemas/ProgramReference1"
        }
      },
      "Uri": {
        "type": "string",
        "format": "uri"
      },
      "DateRangeDetails1": {
        "type": "object",
        "description": "Represents a period of time between a specific start and end date (inclusive).",
        "additionalProperties": false,
        "properties": {
          "startDate": {
            "description": "The start of this date range. If null, represents the earliest possible date.",
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/Date1"
              }
            ]
          },
          "endDate": {
            "description": "The end of this date range. If null, represents the latest possible date.",
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/Date1"
              }
            ]
          }
        }
      },
      "Date1": {
        "type": "object",
        "description": "Represents a calendar date without time information.",
        "additionalProperties": false,
        "properties": {
          "year": {
            "type": "integer",
            "description": "The year component of the date.",
            "format": "int32"
          },
          "month": {
            "type": "integer",
            "description": "The month component of the date (1-12).",
            "format": "int32"
          },
          "day": {
            "type": "integer",
            "description": "The day component of the date (1-31).",
            "format": "int32"
          }
        }
      },
      "ResourceUserAllocatedHoursSeriesDataPoint1": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "period": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/PeriodDetails1"
              }
            ]
          },
          "allocatedHoursForProjectsInScope": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/CalendarDayDuration1"
              }
            ]
          },
          "allocatedHoursForProjectsNotInScope": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/CalendarDayDuration1"
              }
            ]
          }
        }
      },
      "PeriodDetails1": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "year": {
            "type": "integer",
            "format": "int32"
          },
          "quarter": {
            "type": "integer",
            "format": "int32"
          },
          "month": {
            "type": "integer",
            "format": "int32"
          },
          "week": {
            "type": "integer",
            "format": "int32"
          },
          "day": {
            "type": "integer",
            "format": "int32"
          },
          "periodStart": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/Date1"
              }
            ]
          },
          "periodEnd": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/Date1"
              }
            ]
          }
        }
      },
      "CalendarDayDuration1": {
        "type": "object",
        "description": "Note that only positive durations are considered valid for this type.",
        "additionalProperties": false,
        "properties": {
          "hours": {
            "type": "integer",
            "format": "int32"
          },
          "minutes": {
            "type": "integer",
            "format": "int32"
          },
          "seconds": {
            "type": "integer",
            "format": "int32"
          },
          "milliseconds": {
            "type": "integer",
            "format": "int32"
          },
          "microseconds": {
            "type": "integer",
            "format": "int32"
          }
        }
      },
      "ResourceUserAllocatedHoursSeriesDataPoint1Array": {
        "type": "array",
        "items": {
          "$ref": "#/components/schemas/ResourceUserAllocatedHoursSeriesDataPoint1"
        }
      }
    },
    "securitySchemes": {
      "bearer": {
        "type": "http",
        "scheme": "bearer"
      }
    }
  },
  "security": [
    {
      "bearer": []
    }
  ]
}