openapi: 3.1.0 info: title: Oracle Primavera P6 EPPM REST API description: >- Oracle Primavera P6 EPPM REST API provides programmatic access to enterprise project portfolio management data including WBS structures, activity schedules, resource assignments, critical path analysis, and portfolio dashboards. Available for both cloud and on-premises deployments. version: 26.0.0 contact: name: Oracle Support url: https://support.oracle.com license: name: Oracle Technology Network License url: https://www.oracle.com/legal/terms/ servers: - url: https://{host}/p6ws/rest/v1 description: P6 EPPM REST API variables: host: default: primavera.example.com description: P6 EPPM server hostname security: - basicAuth: [] - oauth2: [] tags: - name: Activities description: Activity scheduling and management - name: Baselines description: Project baseline operations - name: Projects description: Project management operations - name: ResourceAssignments description: Resource assignment operations - name: Resources description: Resource and role management - name: WBS description: Work Breakdown Structure management paths: /projects: get: operationId: listProjects summary: List projects description: Returns a collection of projects accessible to the authenticated user, with optional field filtering. tags: - Projects parameters: - name: Fields in: query description: Comma-separated list of fields to return schema: type: string example: ObjectId,Id,Name,Status,StartDate,FinishDate - name: Filter in: query description: RSQL filter expression schema: type: string - name: OrderBy in: query description: Field to sort by schema: type: string - name: offset in: query description: Pagination offset schema: type: integer default: 0 - name: limit in: query description: Maximum records to return schema: type: integer default: 100 maximum: 1000 responses: '200': description: List of projects content: application/json: schema: type: array items: $ref: '#/components/schemas/Project' '401': $ref: '#/components/responses/Unauthorized' '500': $ref: '#/components/responses/ServerError' post: operationId: createProject summary: Create a project description: Creates a new project in the P6 EPPM system. tags: - Projects requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/ProjectCreate' responses: '200': description: Created project object IDs content: application/json: schema: type: array items: type: object properties: ObjectId: type: integer '400': $ref: '#/components/responses/BadRequest' '401': $ref: '#/components/responses/Unauthorized' /projects/{objectId}: get: operationId: getProject summary: Get a project description: Returns a single project by its ObjectId. tags: - Projects parameters: - $ref: '#/components/parameters/ObjectId' - name: Fields in: query description: Comma-separated list of fields to return schema: type: string responses: '200': description: Project details content: application/json: schema: type: array items: $ref: '#/components/schemas/Project' '404': $ref: '#/components/responses/NotFound' put: operationId: updateProject summary: Update a project description: Updates fields on an existing project. tags: - Projects parameters: - $ref: '#/components/parameters/ObjectId' requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/ProjectUpdate' responses: '200': description: Update confirmation '400': $ref: '#/components/responses/BadRequest' '404': $ref: '#/components/responses/NotFound' delete: operationId: deleteProject summary: Delete a project description: Permanently deletes a project and all its child objects. tags: - Projects parameters: - $ref: '#/components/parameters/ObjectId' responses: '200': description: Delete confirmation '404': $ref: '#/components/responses/NotFound' /activities: get: operationId: listActivities summary: List activities description: Returns activities with scheduling data including planned dates, durations, and relationships. tags: - Activities parameters: - name: Fields in: query schema: type: string example: ObjectId,Id,Name,PlannedStartDate,PlannedFinishDate,ActualStartDate,ActualFinishDate,Status,PercentComplete - name: Filter in: query description: Filter by project or WBS; e.g. ProjectObjectId eq 12345 schema: type: string - name: offset in: query schema: type: integer default: 0 - name: limit in: query schema: type: integer default: 100 responses: '200': description: List of activities content: application/json: schema: type: array items: $ref: '#/components/schemas/Activity' '401': $ref: '#/components/responses/Unauthorized' post: operationId: createActivity summary: Create an activity description: Creates a new activity within a project. tags: - Activities requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/ActivityCreate' responses: '200': description: Created activity ObjectId content: application/json: schema: type: array items: type: object properties: ObjectId: type: integer '400': $ref: '#/components/responses/BadRequest' /activities/{objectId}: get: operationId: getActivity summary: Get an activity description: Returns details for a single activity. tags: - Activities parameters: - $ref: '#/components/parameters/ObjectId' - name: Fields in: query schema: type: string responses: '200': description: Activity details content: application/json: schema: type: array items: $ref: '#/components/schemas/Activity' '404': $ref: '#/components/responses/NotFound' put: operationId: updateActivity summary: Update an activity description: Updates scheduling fields on an activity. tags: - Activities parameters: - $ref: '#/components/parameters/ObjectId' requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/ActivityUpdate' responses: '200': description: Update confirmation '404': $ref: '#/components/responses/NotFound' /wbss: get: operationId: listWBS summary: List WBS elements description: Returns Work Breakdown Structure elements for projects. tags: - WBS parameters: - name: Fields in: query schema: type: string example: ObjectId,Code,Name,ProjectObjectId,ParentObjectId,SequenceNumber - name: Filter in: query schema: type: string - name: offset in: query schema: type: integer default: 0 - name: limit in: query schema: type: integer default: 100 responses: '200': description: List of WBS elements content: application/json: schema: type: array items: $ref: '#/components/schemas/WBSElement' '401': $ref: '#/components/responses/Unauthorized' /resources: get: operationId: listResources summary: List resources description: Returns labor, non-labor, and material resources. tags: - Resources parameters: - name: Fields in: query schema: type: string example: ObjectId,Id,Name,ResourceType,UnitOfMeasure,PricePerUnit - name: Filter in: query schema: type: string - name: offset in: query schema: type: integer default: 0 - name: limit in: query schema: type: integer default: 100 responses: '200': description: List of resources content: application/json: schema: type: array items: $ref: '#/components/schemas/Resource' '401': $ref: '#/components/responses/Unauthorized' /resourceassignments: get: operationId: listResourceAssignments summary: List resource assignments description: Returns resource-to-activity assignments with planned and actual units. tags: - ResourceAssignments parameters: - name: Fields in: query schema: type: string example: ObjectId,ActivityObjectId,ResourceObjectId,PlannedUnits,ActualUnits,PlannedCost,ActualCost - name: Filter in: query schema: type: string - name: offset in: query schema: type: integer default: 0 - name: limit in: query schema: type: integer default: 100 responses: '200': description: List of resource assignments content: application/json: schema: type: array items: $ref: '#/components/schemas/ResourceAssignment' '401': $ref: '#/components/responses/Unauthorized' /baselines: get: operationId: listBaselines summary: List baselines description: Returns project baselines including planned dates and costs. tags: - Baselines parameters: - name: Fields in: query schema: type: string example: ObjectId,Name,ProjectObjectId,BaselineType,LastUpdateDate - name: Filter in: query schema: type: string responses: '200': description: List of baselines content: application/json: schema: type: array items: $ref: '#/components/schemas/Baseline' '401': $ref: '#/components/responses/Unauthorized' components: securitySchemes: basicAuth: type: http scheme: basic description: HTTP Basic Authentication with P6 username and password oauth2: type: oauth2 description: Oracle Identity Cloud Service OAuth2 flows: authorizationCode: authorizationUrl: https://identity.oraclecloud.com/oauth2/v1/authorize tokenUrl: https://identity.oraclecloud.com/oauth2/v1/token scopes: read: Read access to P6 data write: Write access to P6 data parameters: ObjectId: name: objectId in: path required: true description: Unique numeric ObjectId schema: type: integer format: int64 responses: BadRequest: description: Invalid request parameters content: application/json: schema: $ref: '#/components/schemas/Error' Unauthorized: description: Authentication required content: application/json: schema: $ref: '#/components/schemas/Error' NotFound: description: Resource not found content: application/json: schema: $ref: '#/components/schemas/Error' ServerError: description: Internal server error content: application/json: schema: $ref: '#/components/schemas/Error' schemas: Project: type: object description: An Oracle Primavera P6 project properties: ObjectId: type: integer description: Unique system-generated identifier Id: type: string description: User-defined project ID (up to 40 chars) Name: type: string description: Project name Status: type: string enum: [Active, Inactive, What-if, Planned] PlannedStartDate: type: string format: date-time PlannedFinishDate: type: string format: date-time ActualStartDate: type: string format: date-time nullable: true ActualFinishDate: type: string format: date-time nullable: true DataDate: type: string format: date-time PercentComplete: type: number format: double minimum: 0 maximum: 100 TotalBudgetCost: type: number format: double EarnedValueCost: type: number format: double PlannedTotalCost: type: number format: double RiskLevel: type: string enum: [Very High, High, Medium, Low, Very Low] WBSObjectId: type: integer description: Root WBS element ObjectId OBSObjectId: type: integer description: Responsible OBS element LastUpdateDate: type: string format: date-time CreateDate: type: string format: date-time ProjectCreate: type: object required: - Name - Id - WBSObjectId properties: Id: type: string Name: type: string Status: type: string enum: [Active, Inactive, What-if, Planned] default: Active PlannedStartDate: type: string format: date-time WBSObjectId: type: integer ProjectUpdate: type: object properties: ObjectId: type: integer Name: type: string Status: type: string enum: [Active, Inactive, What-if, Planned] DataDate: type: string format: date-time PercentComplete: type: number format: double Activity: type: object description: A project schedule activity properties: ObjectId: type: integer Id: type: string Name: type: string ProjectObjectId: type: integer WBSObjectId: type: integer Type: type: string enum: [Task Dependent, Resource Dependent, Level of Effort, Start Milestone, Finish Milestone, WBS Summary] Status: type: string enum: [Not Started, In Progress, Completed] PercentComplete: type: number format: double PercentCompleteType: type: string enum: [Physical, Duration, Units] PlannedStartDate: type: string format: date-time PlannedFinishDate: type: string format: date-time ActualStartDate: type: string format: date-time nullable: true ActualFinishDate: type: string format: date-time nullable: true RemainingStartDate: type: string format: date-time nullable: true RemainingFinishDate: type: string format: date-time nullable: true PlannedDuration: type: number format: double description: Planned duration in hours ActualDuration: type: number format: double RemainingDuration: type: number format: double TotalFloat: type: number format: double description: Total float in hours; negative indicates critical path FreeFloat: type: number format: double CriticalFlag: type: boolean CalendarObjectId: type: integer ActivityCreate: type: object required: - Name - Id - ProjectObjectId - WBSObjectId properties: Id: type: string Name: type: string ProjectObjectId: type: integer WBSObjectId: type: integer Type: type: string enum: [Task Dependent, Resource Dependent, Level of Effort, Start Milestone, Finish Milestone] PlannedStartDate: type: string format: date-time PlannedFinishDate: type: string format: date-time ActivityUpdate: type: object properties: ObjectId: type: integer PercentComplete: type: number format: double ActualStartDate: type: string format: date-time ActualFinishDate: type: string format: date-time RemainingDuration: type: number format: double WBSElement: type: object description: A Work Breakdown Structure element properties: ObjectId: type: integer Code: type: string Name: type: string ProjectObjectId: type: integer ParentObjectId: type: integer nullable: true SequenceNumber: type: integer StatusCode: type: string enum: [Active, Inactive] OBSObjectId: type: integer Resource: type: object description: A P6 resource (labor, non-labor, or material) properties: ObjectId: type: integer Id: type: string Name: type: string ResourceType: type: string enum: [Labor, Nonlabor, Material] UnitOfMeasure: type: string DefaultUnitsPerTime: type: number format: double PricePerUnit: type: number format: double CalendarObjectId: type: integer EmailAddress: type: string OfficePhone: type: string ParentObjectId: type: integer nullable: true ResourceAssignment: type: object description: An assignment of a resource to an activity properties: ObjectId: type: integer ActivityObjectId: type: integer ResourceObjectId: type: integer PlannedUnits: type: number format: double ActualUnits: type: number format: double RemainingUnits: type: number format: double PlannedCost: type: number format: double ActualCost: type: number format: double RemainingCost: type: number format: double PlannedStartDate: type: string format: date-time PlannedFinishDate: type: string format: date-time ActualStartDate: type: string format: date-time nullable: true ActualFinishDate: type: string format: date-time nullable: true RateSource: type: string enum: [Resource, Override, Role] Baseline: type: object description: A project baseline snapshot properties: ObjectId: type: integer Name: type: string ProjectObjectId: type: integer BaselineType: type: string enum: [Initial Planning Baseline, Mid-Project Baseline, Current Budget, Last Approved Budget] LastUpdateDate: type: string format: date-time Error: type: object properties: ErrorCode: type: integer ErrorMessage: type: string