Scout RFP (Workday Strategic Sourcing) contracts API

Use the contracts API to create, update, and query the contracts in Workday Strategic Sourcing. ## Contract Object ## Docusign Envelope Object ## Adobe Sign Agreement Object ## Adobe Sign Document Object

Operations 9

GET /contracts List Contracts #
POST /contracts Create a Contract #
GET /contracts/{id} Get a Contract #
PATCH /contracts/{id} Update a Contract #
DELETE /contracts/{id} Delete a Contract #
GET /contracts/{external_id}/external_id Get a Contract by External ID #
PATCH /contracts/{external_id}/external_id Update a Contract by External ID #
DELETE /contracts/{external_id}/external_id Delete a Contract by External ID #
GET /contracts/describe Describe Contract object #

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/scoutrfp-contracts-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

scoutrfp-contracts-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: Workday Strategic Sourcing attachments Contracts 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: contracts
  x-displayName: Contracts
  description: 'Use the contracts API to create, update, and query the contracts in Workday Strategic Sourcing.


    ## Contract Object


    <SchemaDefinition schemaRef="#/components/schemas/Contract" exampleRef="#/components/examples/Contract" showReadOnly={true} showWriteOnly={true} />


    ## Docusign Envelope Object


    <SchemaDefinition schemaRef="#/components/schemas/DocusignEnvelope" showReadOnly={true} showWriteOnly={true} />


    ## Adobe Sign Agreement Object


    <SchemaDefinition schemaRef="#/components/schemas/AdobeSignAgreement" showReadOnly={true} showWriteOnly={true} />


    ## Adobe Sign Document Object


    <SchemaDefinition schemaRef="#/components/schemas/AdobeSignDocument" showReadOnly={true} showWriteOnly={true} />

    '
paths:
  /contracts:
    get:
      tags:
      - contracts
      description: Returns a list of contracts for the specified criteria.
      operationId: List Contracts
      summary: List Contracts
      parameters:
      - name: filter
        in: query
        description: 'Filter contracts by multiple criteria. Only one filter per attribute is supported.

          For best performance, we recommend 5 or less filters.

          '
        schema:
          $ref: '#/components/schemas/ContractInputFilter'
      - name: include
        in: query
        schema:
          $ref: '#/components/schemas/ContractRelatedResources'
        description: 'To reduce the number of HTTP requests, related resources can be requested along with the

          requested primary resources. Such responses are called "compound documents". In a compound

          document, all included resources will be represented as an array of resource objects in a

          top-level `included` member.


          The value of the `include` parameter must be a comma-separated list of relationships from

          the list of available relationships.




          ```

          /contracts?include=contract_type,supplier_company

          ```


          In the response, relationships will be represented as normal linkage objects (containing

          `id` and `type`), and full related resource details will be presented in the `included`

          section as resource objects (with `attributes`, `links`, and potentially `relationships`).

          '
      - 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/Contract'
                    included:
                      $ref: '#/components/schemas/ContractIncludedResources'
                - $ref: '#/components/schemas/Pagination'
              examples:
                simple_request:
                  summary: Simple request
                  $ref: '#/components/examples/index_response'
                compound_request:
                  summary: Compound request
                  $ref: '#/components/examples/index_compound_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/contracts/v1/contracts\"\n"
    post:
      tags:
      - contracts
      description: 'Create a contract with given attributes.

        '
      operationId: Create a Contract
      summary: Create a Contract
      parameters:
      - name: include
        in: query
        schema:
          $ref: '#/components/schemas/ContractRelatedResources'
        description: 'Use the `include` parameter to request related resources along with the primary resource.

          '
      requestBody:
        content:
          application/vnd.api+json:
            schema:
              type: object
              properties:
                data:
                  $ref: '#/components/schemas/ContractCreate'
            examples:
              simple_request:
                summary: Simple request
                $ref: '#/components/examples/create_simple_request'
              compound_request:
                summary: Assign relationships by Scout ID
                $ref: '#/components/examples/create_compound_request'
              compound_external_request:
                summary: Assign relationships by external ID
                $ref: '#/components/examples/create_compound_external_request'
      responses:
        '201':
          description: OK
          content:
            application/vnd.api+json:
              schema:
                type: object
                properties:
                  data:
                    $ref: '#/components/schemas/Contract'
                  included:
                    $ref: '#/components/schemas/ContractIncludedResources'
              examples:
                simple_request:
                  summary: Simple request
                  $ref: '#/components/examples/create_simple_response'
                compound_request:
                  summary: Compound request
                  $ref: '#/components/examples/create_compound_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\":\"contracts\",\"attributes\":{\"title\":\"My Contract\"}}}' \\\n     \"https://api.us.workdayspend.com/services/contracts/v1/contracts\"\n"
  /contracts/{id}:
    get:
      tags:
      - contracts
      description: 'Retrieves the details of an existing contract. You need to supply the unique contract

        identifier that was returned upon contract creation.

        '
      operationId: Get a Contract
      summary: Get a Contract
      parameters:
      - name: id
        in: path
        description: Unique Contract identifier.
        required: true
        schema:
          type: integer
        example: 1
      - name: include
        in: query
        schema:
          $ref: '#/components/schemas/ContractRelatedResources'
        description: 'Use the `include` parameter to request related resources along with the primary resource.

          '
      responses:
        '200':
          description: OK
          content:
            application/vnd.api+json:
              schema:
                type: object
                properties:
                  data:
                    $ref: '#/components/schemas/Contract'
                  included:
                    $ref: '#/components/schemas/ContractIncludedResources'
              examples:
                simple_request:
                  summary: Simple request
                  $ref: '#/components/examples/show_response'
                compound_request:
                  summary: Compound request
                  $ref: '#/components/examples/show_compound_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/contracts/v1/contracts/1\"\n"
    patch:
      tags:
      - contracts
      description: 'Updates the details of an existing contract. You need to supply the unique supplier

        contract that was returned upon contract creation.


        Please note, that request body must include an `id` attribute with the value of your contract

        unique identifier (the same one you passed in the URL).

        '
      operationId: Update a Contract
      summary: Update a Contract
      parameters:
      - name: id
        in: path
        description: Unique Contract identifier.
        required: true
        schema:
          type: integer
        example: 1
      - name: include
        in: query
        schema:
          $ref: '#/components/schemas/ContractRelatedResources'
        description: 'Use the `include` parameter to request related resources along with the primary resource.

          '
      requestBody:
        content:
          application/vnd.api+json:
            schema:
              type: object
              properties:
                data:
                  $ref: '#/components/schemas/ContractUpdate'
            examples:
              simple_request:
                summary: Simple request
                $ref: '#/components/examples/update_simple_request'
              compound_request:
                summary: Assign relationships by Scout ID
                $ref: '#/components/examples/update_compound_request'
              compound_external_request:
                summary: Assign relationships by external ID
                $ref: '#/components/examples/update_compound_external_request'
      responses:
        '200':
          description: OK
          content:
            application/vnd.api+json:
              schema:
                type: object
                properties:
                  data:
                    $ref: '#/components/schemas/Contract'
                  included:
                    $ref: '#/components/schemas/ContractIncludedResources'
              examples:
                simple_request:
                  summary: Simple request
                  $ref: '#/components/examples/update_simple_response'
                compound_request:
                  summary: Compound request
                  $ref: '#/components/examples/update_compound_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 'contracts'
                  description: 'Returns error due to invalid `type` parameter.

                    '
                  value:
                    errors:
                    - detail: Missing or invalid 'type' specified, expected 'contracts'
      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\":\"contracts\",\"id\":\"1\",\"attributes\":{\"segmentation_status\": \"out_of_compliance\"}}}' \\\n     \"https://api.us.workdayspend.com/services/contracts/v1/contracts/1\"\n"
    delete:
      tags:
      - contracts
      description: 'Deletes a contract. You need to supply the unique contract

        identifier that was returned upon contract creation.

        '
      operationId: Delete a Contract
      summary: Delete a Contract
      parameters:
      - name: id
        in: path
        description: Unique Contract 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/contracts/v1/contracts/1\"\n"
  /contracts/{external_id}/external_id:
    get:
      tags:
      - contracts
      description: 'Retrieves the details of an existing contract. You need to supply the unique

        contract external identifier (the one you used when created the contract).

        '
      operationId: Get a Contract by External ID
      summary: Get a Contract by External ID
      parameters:
      - name: external_id
        in: path
        description: Contract external identifier.
        required: true
        schema:
          type: string
        example: 1234-5678-abcd-efgh
      - name: include
        in: query
        schema:
          $ref: '#/components/schemas/ContractRelatedResources'
        description: 'Use the `include` parameter to request related resources along with the primary resource.

          '
      responses:
        '200':
          description: OK
          content:
            application/vnd.api+json:
              schema:
                type: object
                properties:
                  data:
                    $ref: '#/components/schemas/Contract'
                  included:
                    $ref: '#/components/schemas/ContractIncludedResources'
              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/contracts/v1/contracts/SUP-1234/external_id\"\n"
    patch:
      tags:
      - contracts
      description: 'Updates the details of an existing contract. You need to supply the unique contract

        external identifier (the one you used when created the contract).


        Please note, that request body must include an `id` attribute with the value of your contract

        external identifier (the same one you passed in the URL).

        '
      operationId: Update a Contract by External ID
      summary: Update a Contract by External ID
      parameters:
      - name: external_id
        in: path
        description: Contract external identifier.
        required: true
        schema:
          type: string
        example: 1234-5678-abcd-efgh
      - name: include
        in: query
        schema:
          $ref: '#/components/schemas/ContractRelatedResources'
        description: 'Use the `include` parameter to request related resources along with the primary resource.

          '
      requestBody:
        content:
          application/vnd.api+json:
            schema:
              type: object
              properties:
                data:
                  $ref: '#/components/schemas/ContractUpdate'
            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/Contract'
                  included:
                    $ref: '#/components/schemas/ContractIncludedResources'
              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\":\"contracts\",\"id\":\"SUP-1234\",attributes\":{\"segmentation_status\": \"out_of_compliance\"}}}' \\\n     \"https://api.us.workdayspend.com/services/contracts/v1/contracts/SUP-1234/external_id\"\n"
    delete:
      tags:
      - contracts
      description: 'Deletes a contract. You need to supply the unique contract

        external identifier (the one you used when created the contract).

        '
      operationId: Delete a Contract by External ID
      summary: Delete a Contract by External ID
      parameters:
      - name: external_id
        in: path
        description: Contract 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/contracts/v1/contracts/SUP-1234/external_id\"\n"
  /contracts/describe:
    get:
      tags:
      - contracts
      description: Returns a list of fields for the contract object.
      operationId: Describe Contract object
      summary: Describe Contract object
      responses:
        '200':
          description: OK
          content:
            application/vnd.api+json:
              schema:
                type: object
                properties:
                  data:
                    type: array
                    items:
                      $ref: '#/components/schemas/ContractFieldModel'
              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/contracts/v1/contracts/describe\"\n"
components:
  schemas:
    ContractTypeValue:
      type: string
      description: Object type, should always be `contracts`.
      example: contracts
    ContractInputFilter:
      type: object
      properties:
        updated_at_from:
          type: string
          format: date-time
          description: Return contracts updated on or after the specified timestamp.
          example: '2019-10-29T21:28:46.790Z'
        updated_at_to:
          type: string
          format: date-time
          description: Return contracts updated on or before the specified timestamp.
          example: '2019-10-29T21:28:46.790Z'
        number_from:
          type: string
          format: integer
          description: Find contracts with the number equal or greater than the specified one.
        number_to:
          type: string
          format: integer
          description: Find contracts with the number equal or smaller than the specified one.
        title_contains:
          type: string
          description: Return contracts with title containing the specified string.
        title_not_contains:
          type: string
          description: Return contracts with title not containing the specified string.
        description_contains:
          type: string
          description: Return contracts with description containing the specified string.
        description_not_contains:
          type: string
          description: Return contracts with description not containing the specified string.
        external_id_empty:
          type: boolean
          description: Return contracts with `external_id` blank.
          example: true
        external_id_not_empty:
          type: boolean
          description: Return contracts with non-blank `external_id`.
          example: false
        external_id_equals:
          type: string
          description: Find contracts by a specific external ID.
          example: SUP-123
        external_id_not_equals:
          type: string
          description: Find contracts excluding the one with the specified external ID.
          example: SUP-123
        actual_start_date_from:
          type: string
          format: date
          description: Return contracts started on or after the specified date.
        actual_start_date_to:
          type: string
          format: date
          description: Return contracts started on or before the specified date.
        actual_end_date_from:
          type: string
          format: date
          description: Return contracts ended on or after the specified date.
        actual_end_date_to:
          type: string
          format: date
          description: Return contracts ended on or before the specified date.
        actual_spend_amount_from:
          type: number
          format: double
          description: Return contracts with an actual spend amount equal or greater than the specified amount.
        actual_spend_amount_to:
          type: number
          format: double
          description: Return contracts with an actual spend amount equal or smaller than the specified amount.
        auto_renewal:
          type: array
          description: Auto-renewal mode.
          items:
            type: string
            enum:
            - 'yes'
            - 'no'
            - evergreen
          example:
          - 'yes'
          - evergreen
        needs_attention_equals:
          type: boolean
          description: Return contracts with the specified "needs attention" status.
        needs_attention_not_equals:
          type: boolean
          description: Return contracts with the "needs attention" status not equal to the specified one.
        renew_number_of_times_from:
          type: integer
          description: Find contracts that should be renewed at least the specified number of times.
        renew_number_of_times_to:
          type: integer
          description: Find contracts that should be renewed at most the specified number of times.
        state_equals:
          type: array
          items:
            $ref: '#/components/schemas/ContractState'
          description: Find contracts with specified states.
          example:
          - expired
          - terminated
        terminated_note_contains:
          type: string
          description: Return contracts with termination note containing the specified string.
        terminated_note_not_contains:
          type: string
          description: Return contracts with termination note not containing the specified string.
        terminated_note_empty:
          type: string
          description: Return contracts with an empty termination note.
        terminated_note_not_empty:
          type: string
          description: Return contracts with a non-empty termination note.
        terminated_reason_contains:
          type: string
          description: Return contracts with termination reason containing the specified string.
        terminated_reason_not_contains:
          type: string
          description: Return contracts with termination reason not containing the specified string.
        terminated_reason_empty:
          type: string
          description: Return contracts with an empty termination reason.
        terminated_reason_not_empty:
          type: string
          description: Return contracts with a non-empty termination reason.
        contract_type_id_equals:
          type: integer
          description: Find contracts with the specified contract type.
        contract_type_id_not_equals:
          type: integer
          description: Find contracts with the contract type different from the specified one.
        marked_as_needs_attention_at_from:
          type: string
          format: date-time
          description: Find contracts marked as "needs attention" after or on the specified date.
        marked_as_needs_attention_at_to:
          type: string
          format: date-time
          description: Find contracts marked as "needs attention" before or on the specified date.
        needs_attention_note_contains:
          type: string
          description: Return contracts with "needs attention" note containing the specified string.
        needs_attention_note_not_contains:
          type: string
          description: Return contracts with "needs attention" note not containing the specified string.
        needs_attention_note_empty:
          type: string
          description: Return contracts with an empty "needs attention" note.
        needs_attention_note_not_empty:
          type: string
          description: Return contracts with a non-empty "needs attention" note.
        needs_attention_reason_contains:
          type: string
          description: Return contracts with "needs attention" reason containing the specified string.
        needs_attention_reason_not_contains:
          type: string
          description: Return contracts with "needs attention" reason not containing the specified string.
        needs_attention_reason_empty:
          type: string
          description: Return contracts with an empty "needs attention" reason.
        needs_attention_reason_not_empty:
          type: string
          description: Return contracts with a non-empty "needs attention" reason.
        renewal_termination_notice_date_from:
          type: string
          format: date
          description: Find contracts with the termination notice date on or after the specified one.
        renewal_termination_notice_date_to:
          type: string
          format: date
          description: Find contracts with the termination notice date on or before the specified one.
        renewal_termination_reminder_date_from:
          type: string
          format: date
          description: Find contracts with the termination reminder date on or after the specified one.
        renewal_termination_reminder_date_to:
          type: string
          format: date
          description: Find contracts with the termination reminder date on or before the specified one.
        spend_category_id_equals:
          type: array
          items:
            type: integer
          description: Find contracts using the specified Spend Category IDs.
          example:
          - 1
          - 2
    AttachmentId:
      type: integer
      description: Attachment identifier string.
      example: 1
    ExternalSupplierCompanyType:
      type: string
      description: Object type, should always be `supplier_companies`.
      example: supplier_companies
    SupplierCompany:
      allOf:
      - $ref: '#/components/schemas/SupplierCompanyBase'
    AdobeSignDocumentBase:
      title: AdobeSignDocument
      type: object
      required:
      - type
      - id
      properties:
        type:
          $ref: '#/components/schemas/AdobeSignDocumentType'
        id:
          $ref: '#/components/schemas/AdobeSignDocumentId'
    SpendCategoryName:
      type: string
      maxLength: 255
      description: Spend category name.
    ContractFieldModel:
      allOf:
      - type: object
        properties:
          type:
            type: string
            description: Object type, should always be `contract_fields`.
            example: contract_fields
      - $ref: '#/components/schemas/DescribeFieldModel'
    ContractTypeId:
      type: integer
      description: Contract type identifier string.
      example: 1
    ContractRelatedResources:
      allOf:
      - type: string
        enum:
        - contract_type
        - spend_category
        - supplier_company
        - docusign_envelopes
        - adobe_sign_agreements
    CustomFieldURL:
      title: URL
      allOf:
      - $ref: '#/components/schemas/CustomFieldBase'
      - type: object
        properties:
          value:
            type: string
            format: url
            description: URL string.
    OpenApiEnum:
      type: string
      enum:
      - string
      - number
      - integer
      - boolean
      - array
      - object
      description: OpenAPI data type.
      example: string
    ResourceLinks:
      type: object
      description: List of related links.
      allOf:
      - $ref: '#/components/schemas/SelfLink'
    ContractCreate:
      type: object
      required:
      - type
      properties:
        type:
          $ref: '#/components/schemas/ContractTypeValue'
        attributes:
          $ref: '#/components/schemas/ContractAttributes'
        relationships:
          $ref: '#/components/schemas/ContractCreateRequestRelationship'
    DescribeFieldBase:
      title: DescribeFieldModel
      type: object
      required:
      - type
      - id
      properties:
        type:
          $ref: '#/components/schemas/DescribeFieldType'
        id:
          $ref: '#/components/schemas/DescribeFieldId'
    SpendCategoryType:
      type: string
      description: Object type, should always be `spend_categories`.
      example: spend_categories
    StakeholderId:
      type: integer
      description: Stakeholder identifier string.
      example: 1
    StakeholderEmail:
      type: string
      format: email
      description: Stakeholder's email.
      example: stakeholder.email@example.com
    ContractTypeAttributes:
      type: object
      description: Contract type attributes.
      required:
      - name
      - shortcode
      properties:
        name:
          type: string
          maxLength: 255
          description: Contract type name.
          example: My Contract Type
        shortcode:
          type: string
          maxLength: 4
          description: Contract type short code.
          example: CPUB
        external_id:
          type: string
          description: Customer provided unique contract type identifier.
          example: 1234-5678-abcd-efgh
    StakeholderLookup:
      oneOf:
      - $ref: '#/components/schemas/StakeholderBaseData'
      - $ref: '#/components/schemas/StakeholderMetaIdLookup'
      - $ref: '#/components/schemas/StakeholderMetaEmailLookup'
    DocusignEnvelopeRelationship:
      title: Docusign envelope relationships
      type: object
      properties:
        attachments:
          type: array
          description: Docusign envelope list of attachments
          items:
            $ref: '#/components/schemas/AttachmentBase'
    NextPageLink:
      type: object
      properties:
        next:
          type:
          - string
          - 'null'
          format: url
          description: Link to the next results page.
    AdobeSignAgreementRelationship:
      title: Adobe Sign Agreement relationships
      type: object
      properties:
        documents:
          type: array
          description: List of Adobe Sign Documents
          items:
            $ref: '#/components/schemas/AdobeSignDocumentBase'
    CustomFieldLookup:
      title: Lookup
      allOf:
      - $ref: '#/components/schemas/CustomFieldBase'
      - type: object
        properties:
          value:
            type: string
            description: A value from a customer-provided lookup data source.
    ContractId:
      type: integer
      description: Contract identifier string.
      example: 1
    SpendCategoryExternalId:
      type: string
      maxLength: 255
      description: Spend category external identifier string.
    CustomFieldDate:
      title: Date
      allOf:
      - $ref: '#/components/schemas/CustomFi

# --- truncated at 32 KB (123 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/scoutrfp/refs/heads/main/openapi/scoutrfp-contracts-api-openapi.yml