Scout RFP (Workday Strategic Sourcing) projects API
Use the projects API to create, update, and query the projects in Workday Strategic Sourcing. ## Project Object
Use the projects API to create, update, and query the projects in Workday Strategic Sourcing. ## Project Object
openapi: 3.0.2
info:
title: Workday Strategic Sourcing attachments projects API
version: '1.0'
description: '<span id="section/Authentication/api_key" data-section-id="section/Authentication/api_key"></span>
<span id="section/Authentication/user_token" data-section-id="section/Authentication/user_token"></span>
<span id="section/Authentication/user_email" data-section-id="section/Authentication/user_email"></span>
'
servers:
- url: https://api.us.workdayspend.com/services/attachments/v1
description: Production Server
- url: https://api.sandbox.us.workdayspend.com/services/attachments/v1
description: Sandbox Server
security:
- api_key: []
user_token: []
user_email: []
tags:
- name: projects
x-displayName: Projects
description: 'Use the projects API to create, update, and query the projects in Workday Strategic Sourcing.
## Project Object
<SchemaDefinition schemaRef="#/components/schemas/Project" exampleRef="#/components/examples/Project" showReadOnly={true} showWriteOnly={true} />
'
paths:
/projects:
get:
tags:
- projects
description: Returns a list of projects for the specified criteria.
operationId: List Projects
summary: List Projects
parameters:
- name: filter
in: query
description: 'Filter projects by multiple criteria. Only one filter per attribute is supported.
For best performance, we recommend 5 or less filters.
'
schema:
$ref: '#/components/schemas/ProjectInputFilter'
- name: page
in: query
description: 'Customize pagination results with `size`.
'
schema:
$ref: '#/components/schemas/PageInput'
responses:
'200':
description: OK
content:
application/vnd.api+json:
schema:
type: object
allOf:
- type: object
properties:
data:
type: array
items:
$ref: '#/components/schemas/Project'
- $ref: '#/components/schemas/Pagination'
examples:
success:
$ref: '#/components/examples/index_response'
'401':
description: Unauthorized
x-codeSamples:
- label: Curl
source: "curl -H \"X-Api-Key: ${COMPANY_KEY}\" \\\n -H \"X-User-Token: ${USER_TOKEN}\" \\\n -H \"X-User-Email: ${USER_EMAIL}\" \\\n -H \"Content-Type: application/vnd.api+json\" \\\n \"https://api.us.workdayspend.com/services/projects/v1/projects\"\n"
post:
tags:
- projects
description: 'Create a project with given attributes.
'
operationId: Create a Project
summary: Create a Project
requestBody:
content:
application/vnd.api+json:
schema:
type: object
properties:
data:
$ref: '#/components/schemas/ProjectCreate'
examples:
success:
$ref: '#/components/examples/create_request'
compound document:
$ref: '#/components/examples/create_compound_request'
responses:
'201':
description: OK
content:
application/vnd.api+json:
schema:
type: object
properties:
data:
$ref: '#/components/schemas/Project'
examples:
success:
$ref: '#/components/examples/create_response'
'401':
description: Unauthorized
x-codeSamples:
- label: Curl
source: "curl -H \"X-Api-Key: ${COMPANY_KEY}\" \\\n -H \"X-User-Token: ${USER_TOKEN}\" \\\n -H \"X-User-Email: ${USER_EMAIL}\" \\\n -H \"Content-Type: application/vnd.api+json\" \\\n -X POST \\\n -d '{\"data\":{\"type\":\"projects\",\"attributes\":{\"title\":\"My Project\"}}}' \\\n \"https://api.us.workdayspend.com/services/projects/v1/projects\"\n"
/projects/{id}:
get:
tags:
- projects
description: 'Retrieves the details of an existing project. You need to supply the unique project
identifier that was returned upon project creation.
'
operationId: Get a Project
summary: Get a Project
parameters:
- name: id
in: path
description: Unique Project identifier.
required: true
schema:
type: integer
example: 1
responses:
'200':
description: OK
content:
application/vnd.api+json:
schema:
type: object
properties:
data:
$ref: '#/components/schemas/Project'
examples:
success:
$ref: '#/components/examples/show_response'
'401':
description: Unauthorized
'404':
description: Not Found
x-codeSamples:
- label: Curl
source: "curl -H \"X-Api-Key: ${COMPANY_KEY}\" \\\n -H \"X-User-Token: ${USER_TOKEN}\" \\\n -H \"X-User-Email: ${USER_EMAIL}\" \\\n -H \"Content-Type: application/vnd.api+json\" \\\n \"https://api.us.workdayspend.com/services/projects/v1/projects/1\"\n"
patch:
tags:
- projects
description: 'Updates the details of an existing project. You need to supply the unique supplier
project that was returned upon project creation.
Please note, that request body must include an `id` attribute with the value of your project
unique identifier (the same one you passed in the URL).
'
operationId: Update a Project
summary: Update a Project
parameters:
- name: id
in: path
description: Unique Project identifier.
required: true
schema:
type: integer
example: 1
requestBody:
content:
application/vnd.api+json:
schema:
type: object
properties:
data:
$ref: '#/components/schemas/ProjectUpdate'
examples:
success:
$ref: '#/components/examples/update_request'
responses:
'200':
description: OK
content:
application/vnd.api+json:
schema:
type: object
properties:
data:
$ref: '#/components/schemas/Project'
examples:
success:
$ref: '#/components/examples/update_response'
'401':
description: Unauthorized
'404':
description: Not Found
'409':
description: Conflict
content:
application/vnd.api+json:
schema:
$ref: '#/components/schemas/Errors'
examples:
invalid_type:
summary: Missing or invalid 'type' specified, expected 'projects'
description: 'Returns error due to invalid `type` parameter.
'
value:
errors:
- detail: Missing or invalid 'type' specified, expected 'projects'
x-codeSamples:
- label: Curl
source: "curl -H \"X-Api-Key: ${COMPANY_KEY}\" \\\n -H \"X-User-Token: ${USER_TOKEN}\" \\\n -H \"X-User-Email: ${USER_EMAIL}\" \\\n -H \"Content-Type: application/vnd.api+json\" \\\n -X PATCH \\\n -d '{\"data\":{\"type\":\"projects\",\"id\":\"1\",\"attributes\":{\"segmentation_status\": \"out_of_compliance\"}}}' \\\n \"https://api.us.workdayspend.com/services/projects/v1/projects/1\"\n"
delete:
tags:
- projects
description: 'Deletes a project. You need to supply the unique project
identifier that was returned upon project creation.
'
operationId: Delete a Project
summary: Delete a Project
parameters:
- name: id
in: path
description: Unique Project identifier.
required: true
schema:
type: integer
example: 1
responses:
'204':
description: OK
'401':
description: Unauthorized
'404':
description: Not Found
x-codeSamples:
- label: Curl
source: "curl -H \"X-Api-Key: ${COMPANY_KEY}\" \\\n -H \"X-User-Token: ${USER_TOKEN}\" \\\n -H \"X-User-Email: ${USER_EMAIL}\" \\\n -H \"Content-Type: application/vnd.api+json\" \\\n -X DELETE \\\n \"https://api.us.workdayspend.com/services/projects/v1/projects/1\"\n"
/projects/{external_id}/external_id:
get:
tags:
- projects
description: 'Retrieves the details of an existing project. You need to supply the unique
project external identifier (the one you used when created the project).
'
operationId: Get a Project by External ID
summary: Get a Project by External ID
parameters:
- name: external_id
in: path
description: Project external identifier.
required: true
schema:
type: string
example: 1234-5678-abcd-efgh
responses:
'200':
description: OK
content:
application/vnd.api+json:
schema:
type: object
properties:
data:
$ref: '#/components/schemas/Project'
examples:
success:
$ref: '#/components/examples/external_show_response'
'401':
description: Unauthorized
'404':
description: Not Found
x-codeSamples:
- label: Curl
source: "curl -H \"X-Api-Key: ${COMPANY_KEY}\" \\\n -H \"X-User-Token: ${USER_TOKEN}\" \\\n -H \"X-User-Email: ${USER_EMAIL}\" \\\n -H \"Content-Type: application/vnd.api+json\" \\\n \"https://api.us.workdayspend.com/services/projects/v1/projects/SUP-1234/external_id\"\n"
patch:
tags:
- projects
description: 'Updates the details of an existing project. You need to supply the unique project
external identifier (the one you used when created the project).
Please note, that request body must include an `id` attribute with the value of your project
external identifier (the same one you passed in the URL).
'
operationId: Update a Project by External ID
summary: Update a Project by External ID
parameters:
- name: external_id
in: path
description: Project external identifier.
required: true
schema:
type: string
example: 1234-5678-abcd-efgh
requestBody:
content:
application/vnd.api+json:
schema:
type: object
properties:
data:
$ref: '#/components/schemas/ProjectUpdate'
examples:
success:
$ref: '#/components/examples/external_update_request'
responses:
'200':
description: OK
content:
application/vnd.api+json:
schema:
type: object
properties:
data:
$ref: '#/components/schemas/Project'
examples:
success:
$ref: '#/components/examples/external_update_response'
'401':
description: Unauthorized
'404':
description: Not Found
x-codeSamples:
- label: Curl
source: "curl -H \"X-Api-Key: ${COMPANY_KEY}\" \\\n -H \"X-User-Token: ${USER_TOKEN}\" \\\n -H \"X-User-Email: ${USER_EMAIL}\" \\\n -H \"Content-Type: application/vnd.api+json\" \\\n -X PATCH \\\n -d '{\"data\":{\"type\":\"projects\",\"id\":\"SUP-1234\",attributes\":{\"segmentation_status\": \"out_of_compliance\"}}}' \\\n \"https://api.us.workdayspend.com/services/projects/v1/projects/SUP-1234/external_id\"\n"
delete:
tags:
- projects
description: 'Deletes a project. You need to supply the unique project
external identifier (the one you used when created the project).
'
operationId: Delete a Project by External ID
summary: Delete a Project by External ID
parameters:
- name: external_id
in: path
description: Project external identifier.
required: true
schema:
type: string
example: 1234-5678-abcd-efgh
responses:
'204':
description: OK
'401':
description: Unauthorized
'404':
description: Not Found
x-codeSamples:
- label: Curl
source: "curl -H \"X-Api-Key: ${COMPANY_KEY}\" \\\n -H \"X-User-Token: ${USER_TOKEN}\" \\\n -H \"X-User-Email: ${USER_EMAIL}\" \\\n -H \"Content-Type: application/vnd.api+json\" \\\n -X DELETE \\\n \"https://api.us.workdayspend.com/services/projects/v1/projects/SUP-1234/external_id\"\n"
/projects/describe:
get:
tags:
- projects
description: Returns a list of fields for the project object.
operationId: Describe Project object
summary: Describe Project object
responses:
'200':
description: OK
content:
application/vnd.api+json:
schema:
type: object
properties:
data:
type: array
items:
$ref: '#/components/schemas/ProjectFieldModel'
examples:
success:
$ref: '#/components/examples/describe_response'
'401':
description: Unauthorized
x-codeSamples:
- label: Curl
source: "curl -H \"X-Api-Key: ${COMPANY_KEY}\" \\\n -H \"X-User-Token: ${USER_TOKEN}\" \\\n -H \"X-User-Email: ${USER_EMAIL}\" \\\n -H \"Content-Type: application/vnd.api+json\" \\\n \"https://api.us.workdayspend.com/services/projects/v1/projects/describe\"\n"
components:
schemas:
StakeholderType:
type: string
description: Object type, should always be `stakeholders`.
example: stakeholders
CustomFieldURL:
title: URL
allOf:
- $ref: '#/components/schemas/CustomFieldBase'
- type: object
properties:
value:
type: string
format: url
description: URL string.
DescribeFieldModel:
allOf:
- $ref: '#/components/schemas/DescribeFieldBase'
- type: object
properties:
attributes:
$ref: '#/components/schemas/DescribeFieldAttributes'
AttachmentId:
type: integer
description: Attachment identifier string.
example: 1
ProjectTypeType:
type: string
description: Object type, should always be `project_types`.
example: project_types
CustomFieldSingleSelect:
title: Single Select
allOf:
- $ref: '#/components/schemas/CustomFieldBase'
- type: object
properties:
value:
type: string
description: A single value from a predefined list of possible options.
ProjectId:
type: integer
description: Project identifier string.
example: 1
DescribeFieldBase:
title: DescribeFieldModel
type: object
required:
- type
- id
properties:
type:
$ref: '#/components/schemas/DescribeFieldType'
id:
$ref: '#/components/schemas/DescribeFieldId'
StakeholderLookup:
oneOf:
- $ref: '#/components/schemas/StakeholderBaseData'
- $ref: '#/components/schemas/StakeholderMetaIdLookup'
- $ref: '#/components/schemas/StakeholderMetaEmailLookup'
CustomFieldDecimal:
title: Decimal
allOf:
- $ref: '#/components/schemas/CustomFieldBase'
- type: object
properties:
value:
type: string
format: decimal
description: A decimal value represented as a number with floating point.
StakeholderBaseData:
title: Stakeholder Data
type: object
required:
- data
properties:
data:
$ref: '#/components/schemas/StakeholderBase'
OpenApiEnum:
type: string
enum:
- string
- number
- integer
- boolean
- array
- object
description: OpenAPI data type.
example: string
CustomField:
oneOf:
- $ref: '#/components/schemas/CustomFieldCheckbox'
- $ref: '#/components/schemas/CustomFieldShortText'
- $ref: '#/components/schemas/CustomFieldParagraph'
- $ref: '#/components/schemas/CustomFieldDate'
- $ref: '#/components/schemas/CustomFieldInteger'
- $ref: '#/components/schemas/CustomFieldCurrency'
- $ref: '#/components/schemas/CustomFieldDecimal'
- $ref: '#/components/schemas/CustomFieldSingleSelect'
- $ref: '#/components/schemas/CustomFieldMultipleSelect'
- $ref: '#/components/schemas/CustomFieldURL'
- $ref: '#/components/schemas/CustomFieldLookup'
- $ref: '#/components/schemas/CustomFieldRelated'
PaginationLinks:
type: object
description: List of related links.
allOf:
- $ref: '#/components/schemas/SelfLink'
- $ref: '#/components/schemas/NextPageLink'
- $ref: '#/components/schemas/PrevPageLink'
Project:
allOf:
- $ref: '#/components/schemas/ProjectBase'
- type: object
properties:
attributes:
$ref: '#/components/schemas/ProjectAttributes'
relationships:
$ref: '#/components/schemas/ProjectRelationship'
links:
$ref: '#/components/schemas/ResourceLinks'
CustomFieldInteger:
title: Integer
allOf:
- $ref: '#/components/schemas/CustomFieldBase'
- type: object
properties:
value:
type: integer
description: An integer value. The maximum value is 9,007,199,254,740,991.
StakeholderBase:
title: Stakeholder
type: object
required:
- type
- id
properties:
type:
$ref: '#/components/schemas/StakeholderType'
id:
$ref: '#/components/schemas/StakeholderId'
PrevPageLink:
type: object
properties:
prev:
type: string
format: url
description: Link to the previous results page.
nullable: true
deprecated: true
ProjectType:
type: string
description: Object type, should always be `projects`.
example: projects
CustomFieldLookup:
title: Lookup
allOf:
- $ref: '#/components/schemas/CustomFieldBase'
- type: object
properties:
value:
type: string
description: A value from a customer-provided lookup data source.
StakeholderEmail:
type: string
format: email
description: Stakeholder's email.
example: stakeholder.email@example.com
ProjectTypeBase:
title: ProjectType
type: object
required:
- type
- id
properties:
type:
$ref: '#/components/schemas/ProjectTypeType'
id:
$ref: '#/components/schemas/ProjectTypeId'
CustomFieldMultipleSelect:
title: Multiple Select
allOf:
- $ref: '#/components/schemas/CustomFieldBase'
- type: object
properties:
value:
type: array
description: A list of values from a predefined list of possible options.
items:
type: string
ProjectTypeId:
type: integer
description: Project type identifier string.
example: 1
CustomFieldCheckbox:
title: Checkbox
allOf:
- $ref: '#/components/schemas/CustomFieldBase'
- type: object
properties:
value:
type: boolean
example: true
ProjectFieldModel:
allOf:
- type: object
properties:
type:
type: string
description: Object type, should always be `project_fields`.
example: project_fields
- $ref: '#/components/schemas/DescribeFieldModel'
Pagination:
type: object
properties:
meta:
type: object
description: Result set metadata.
properties:
count:
type: integer
description: Number of pages in the result set.
links:
$ref: '#/components/schemas/PaginationLinks'
Error:
type: object
properties:
detail:
type: string
description: A human-readable explanation specific to this occurrence of the problem.
ProjectRequestRelationship:
type: object
description: Project relationship.
properties:
owner:
$ref: '#/components/schemas/StakeholderLookup'
requester:
$ref: '#/components/schemas/StakeholderLookup'
DescribeFieldType:
type: string
description: Object type, should always be `describe_fields`.
example: describe_fields
DescribeFieldId:
type: string
description: Field identifier string.
example: field_name
ProjectAttributes:
type: object
description: Project attributes.
required:
- title
properties:
title:
type: string
maxLength: 255
description: Project title.
description:
type: string
description: Project description.
state:
$ref: '#/components/schemas/ProjectState'
state_label:
type: string
description: Customer-specific project state label.
number:
type: integer
readOnly: true
description: Project number, generated sequentially.
external_id:
type: string
description: Customer provided unique project identifier.
target_start_date:
type: string
format: date
description: Target start date.
target_end_date:
type: string
format: date
description: Target end date.
actual_start_date:
type: string
format: date
description: Project start date.
actual_end_date:
type: string
format: date
description: Project end date.
estimated_savings_amount:
type: number
format: double
description: Estimated savings amount.
estimated_spend_amount:
type: number
format: double
description: Estimated spend amount.
actual_spend_amount:
type: number
format: double
description: Actual spend amount.
approved_spend_amount:
type: number
format: double
description: Approved spend amount.
canceled_note:
type: string
description: Cancelation note.
canceled_reason:
type: string
description: Cancelation reason.
marked_as_needs_attention_at:
type: string
format: date-time
description: Date and time when the project was flagged as needs attention.
needs_attention:
type: boolean
description: Identifies whether the project needs attention.
needs_attention_note:
type: string
description: Additional notes on why the project needs attention.
needs_attention_reason:
type: string
description: The reason why the project needs attention.
on_hold_note:
type: string
description: Notes for the on-hold status.
on_hold_reason:
type: string
description: Reasons for the project moved to on-hold.
updated_at:
type: string
format: date-time
readOnly: true
description: Last modification date.
example: '2019-10-29T21:28:46.790Z'
custom_fields:
type: array
items:
$ref: '#/components/schemas/CustomField'
description: 'Custom field values. Note: custom fields of type File can only be accessed through the user interface, they will be only exposed as `null` in the public API.'
approved_at:
type: string
format: date-time
description: Date and time when the project was approved.
readOnly: true
approval_rounds:
type: integer
description: Times project has been sent for approval.
example: 1
first_sent_for_approval_at:
type: string
format: date-time
description: Date and time when project was sent for approval for first time.
readOnly: true
sent_for_approval_at:
type: string
format: date-time
description: Date and time when the project was sent for approval.
CustomFieldRelated:
title: Related
allOf:
- $ref: '#/components/schemas/CustomFieldBase'
- type: object
properties:
value:
type: string
description: A value related to the lookup custom field value, retrieved from the same data source object.
StakeholderId:
type: integer
description: Stakeholder identifier string.
example: 1
NextPageLink:
type: object
properties:
next:
type: string
format: url
description: Link to the next results page.
nullable: true
CustomFieldShortText:
title: Short Text
allOf:
- $ref: '#/components/schemas/CustomFieldBase'
- type: object
properties:
value:
type: string
description: A short text (usually under 255 characters).
SelfLink:
type: object
properties:
self:
type: string
format: url
description: Normalized link to the resource.
CustomFieldEnum:
type: string
enum:
- Checkbox
- File
- Short Text
- Paragraph
- Date
- Integer
- Currency
- Decimal
- Single Select
- Multiple Select
- URL
- Lookup
- Related
description: Internal name and meaning of each field.
example: Short Text
ProjectRelationship:
type: object
description: Project relationships.
properties:
attachments:
type: array
items:
$ref: '#/components/schemas/AttachmentBase'
creator:
type: object
description: Project creator is set based on API keys.
properties:
data:
$ref: '#/components/schemas/StakeholderBase'
requester:
type: object
description: Project requester.
properties:
data:
$ref: '#/components/schemas/StakeholderBase'
owner:
type: object
description: Project owner.
properties:
data:
$ref: '#/components/schemas/StakeholderBase'
project_type:
type: object
properties:
data:
$ref: '#/components/schemas/ProjectTypeBase'
AttachmentBase:
title: Attachment
type: object
required:
- type
- id
properties:
type:
$ref: '#/components/schemas/AttachmentType'
id:
$ref: '#/components/schemas/AttachmentId'
CustomFieldCurrency:
title: Currency
allOf:
- $ref: '#/components/schemas/CustomFieldBase'
- type: object
properties:
value:
format: integer
description: A currency value represented as an integer. The maximum value is 9,007,199,254,740,991.
AttachmentType:
type: string
description: Object type, should always be `attachments`.
example: attachments
StakeholderMetaEmailLookup:
title: Stakeholder Meta by Email
type: object
required:
- meta
properties:
meta:
type: object
description: Search for a stakeholder by email.
required:
- email
properties:
email:
$ref: '#/components/schemas/StakeholderEmail'
ProjectBase:
title: Project
type: object
required:
- type
- id
properties:
type:
$ref: '#/components/schemas/ProjectType'
id:
$ref: '#/components/schemas/ProjectId'
ResourceLinks:
type: object
description: List of related links.
allOf:
- $ref: '#/components/schemas/SelfLink'
StakeholderMetaIdLookup:
title: Stakeholder Meta by ID
type: object
required:
- meta
properties:
meta:
type: object
description: Search for a stakeholder by ID.
required:
- id
properties:
id:
$ref: '#/components/schemas/StakeholderId'
ProjectUpdate:
type: object
required:
- type
- id
properties:
type:
$ref: '#/components/schemas/ProjectType'
id:
$ref: '#/components/schemas/ProjectId'
attributes:
$ref: '#/components/schemas/ProjectAttributes'
relationships:
$ref: '#/components/schemas/ProjectRequestRelationship'
CustomFieldBase:
type: object
properties:
name:
type: string
description: Custom field name.
example: My Custom Field
CustomFieldParagraph:
title: Paragraph
allOf:
- $ref: '#/components/schemas/CustomFieldBase'
- type: object
properties:
value:
type: string
description: A longer text paragraph.
ProjectInputFilter:
type: object
properties:
updated_at_from:
type: string
format: date-time
description: Return projects updated on or after the specified timestamp.
example: '2019-10-29T21:28:46.790Z'
updated_at_to:
type: string
format: date-time
description: Return projects updated on or before the specified timestamp.
example: '2019-10-29T21:28:46.790Z'
number_from:
type: string
format: integer
description: Find projects with the number equal or greater than the specified one.
number_to:
type: string
format: integer
description: Find projects with the number equal or smaller than the specified one.
title_contains:
type: string
description: Return projects with title containing the specified string.
title_not_contains:
type: string
description: Return projects with title not containing the specified string.
description_contains:
type: string
description: Return projects with description containing the specified string.
description_not_contains:
type: string
description: Return projects with description not containing the specified string.
external_id_empty:
type: boolean
description: Return projects with `external_id` blank.
example: true
external_id_not_empty:
type: boolean
description: Return projects with non-blank `external_id`.
example: false
external_id_equals:
type: string
description: Find projects by a specific external ID.
example: SUP-123
external_id_not_equals:
type: string
description: Find projects excluding the one with the specified external ID.
example: SUP-123
actual_start_date_from:
type: string
format: date
description: Return projects started on or after the specified date.
actual_start_date_to:
type: string
format: date
description: Return projects started on or before the specified date.
actual_end_date_from:
type: string
format: date
description: Return projects ended on or after the specified date.
actual_end_d
# --- truncated at 32 KB (76 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/scoutrfp/refs/heads/main/openapi/scoutrfp-projects-api-openapi.yml