Scout RFP (Workday Strategic Sourcing) attachments API

Use the attachments API to create, update, and delete the attachments in Workday Strategic Sourcing. ## Working with Attachments Creating attachments for Workday Strategic Sourcing objects is a two-step process. First, you need to inform the system about your intention to upload an attachment by issuing a "Create an Attachment" request, consisting of the file name and a link to the object to which you are adding an attachment. The link is represented by a relationship object containing an object ID and its type. In the response you will receive a link in the `upload_url` attributes, along with required HTTP headers to send with your file. You will need to upload your file as a binary stream in a PUT request into the specified URL, making sure the required headers are present. Here is how the workflow might look like when triggered from a console: ```bash $ curl -H "X-Api-Key: ${COMPANY_KEY}" \ -H "X-User-Token: ${USER_TOKEN}" \ -H "X-User-Email: ${USER_EMAIL}" \ -H "Content-Type: application/vnd.api+json" \ -X POST \ -d ' { "data": { "type": "attachments", "attributes": { "title": "My Interesting Document", "file_name": "Some Interesting File.pdf" }, "relationships": { "contract": { "data": { "id": 1, "type": "contracts" } } } } } ' \ "https://api.us.workdayspend.com/services/attachments/v1/attachments" { "data": { "id": "1", "type": "attachments", "attributes": { "title": "My Interesting Document", "file_size": null, "upload_url": "https://upload.s3.amazonaws.com/uploads/contract/1/hex/file.pdf?some=very&long=url", "upload_headers": [ { "name": "Content-Type", "value": "application/octet-stream" }, { "name": "x-amz-acl", "value": "private" }, { "name": "x-amz-server-side-encryption", "value": "AES256" }, { "name": "Content-Disposition", "value": "attachment" } ] } } } $ curl -X PUT \ --data "@file.pdf" \ -H "Content-Type: application/octet-stream" \ -H "x-amz-acl: private" \ -H "x-amz-server-side-encryption: AES256" \ -H "Content-Disposition: attachment" \ https://upload.s3.amazonaws.com/uploads/contract/1/hex/file.pdf?some=very&long=url ``` The upload URL expires within 15 minutes after issuing. Please note that you will not be able to upload the data file to the attachment object after that. An automated system will purge all partial uploads after a certain period (usually within 30-60 minutes after creation) to prevent orphan records from overflowing the system. **Please Note**: The list of headers and their values might change at any time, so when you're implementing an integration with the Workday Strategic Sourcing system, make sure to include all of the HTTP headers returned from the attachments endpoint. ## Attachment Object

Operations 6

GET /attachments List Attachments #
POST /attachments Create an Attachment #
GET /attachments/{id} Get an Attachment #
PATCH /attachments/{id} Update an Attachment #
GET /attachments/{external_id}/external_id Get an Attachment by External ID #
PATCH /attachments/{external_id}/external_id Update an Attachment by External ID #

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-attachments-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-attachments-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: Workday Strategic Sourcing Attachments 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: attachments
  x-displayName: Attachments
  description: "Use the attachments API to create, update, and delete the attachments in Workday Strategic Sourcing.\n\n## Working with Attachments\n\nCreating attachments for Workday Strategic Sourcing objects is a two-step process. First, you need to inform\nthe system about your intention to upload an attachment by issuing a \"Create an Attachment\" request,\nconsisting of the file name and a link to the object to which you are adding an attachment. The link\nis represented by a relationship object containing an object ID and its type.\n\nIn the response you will receive a link in the `upload_url` attributes, along with required HTTP headers\nto send with your file. You will need to upload your file as a binary stream in a PUT request into the\nspecified URL, making sure the required headers are present. Here is how the workflow might look\nlike when triggered from a console:\n\n```bash\n$ 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 '\n         {\n           \"data\": {\n             \"type\": \"attachments\",\n             \"attributes\": {\n               \"title\": \"My Interesting Document\",\n               \"file_name\": \"Some Interesting File.pdf\"\n             },\n             \"relationships\": {\n               \"contract\": {\n                 \"data\": {\n                   \"id\": 1,\n                   \"type\": \"contracts\"\n                 }\n               }\n             }\n           }\n         }\n       ' \\\n       \"https://api.us.workdayspend.com/services/attachments/v1/attachments\"\n\n{\n    \"data\": {\n        \"id\": \"1\",\n        \"type\": \"attachments\",\n        \"attributes\": {\n            \"title\": \"My Interesting Document\",\n            \"file_size\": null,\n            \"upload_url\": \"https://upload.s3.amazonaws.com/uploads/contract/1/hex/file.pdf?some=very&long=url\",\n            \"upload_headers\": [\n                {\n                    \"name\": \"Content-Type\",\n                    \"value\": \"application/octet-stream\"\n                },\n                {\n                    \"name\": \"x-amz-acl\",\n                    \"value\": \"private\"\n                },\n                {\n                    \"name\": \"x-amz-server-side-encryption\",\n                    \"value\": \"AES256\"\n                },\n                {\n                    \"name\": \"Content-Disposition\",\n                    \"value\": \"attachment\"\n                }\n            ]\n        }\n    }\n}\n\n$ curl -X PUT \\\n    --data \"@file.pdf\" \\\n    -H \"Content-Type: application/octet-stream\" \\\n    -H \"x-amz-acl: private\" \\\n    -H \"x-amz-server-side-encryption: AES256\" \\\n    -H \"Content-Disposition: attachment\" \\\n    https://upload.s3.amazonaws.com/uploads/contract/1/hex/file.pdf?some=very&long=url\n```\n\nThe upload URL expires within 15 minutes after issuing. Please note that you will not be able to upload\nthe data file to the attachment object after that. An automated system will purge all partial uploads\nafter a certain period (usually within 30-60 minutes after creation) to prevent orphan records from\noverflowing the system.\n\n**Please Note**: The list of headers and their values might change at any time, so when you're\nimplementing an integration with the Workday Strategic Sourcing system, make sure to include all of the HTTP headers\nreturned from the attachments endpoint.\n\n## Attachment Object\n\n<SchemaDefinition schemaRef=\"#/components/schemas/Attachment\" showReadOnly={true} showWriteOnly={true} />\n"
paths:
  /attachments:
    get:
      tags:
      - attachments
      description: 'Returns a filtered list of attachments based of the `filter[id_equals]` mandatory param.

        The result is limited to **50** attachments.

        '
      operationId: List Attachments
      summary: List Attachments
      parameters:
      - name: filter
        in: query
        description: 'Filter attachments by multiple criteria.

          '
        schema:
          $ref: '#/components/schemas/AttachmentInputFilter'
      responses:
        '200':
          description: OK
          content:
            application/vnd.api+json:
              schema:
                type: object
                properties:
                  data:
                    type: array
                    items:
                      $ref: '#/components/schemas/Attachment'
              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/attachments/v1/attachments\"\n"
    post:
      tags:
      - attachments
      description: 'Create an attachment for an object. This endpoint represents the first step in the two-step

        upload workflow, described in the [Working with Attachments](#section/Working-with-Attachments)

        section.


        The only required attribute is `file_name`, which will be used to generate attachment title

        (if a custom one is not supplied), and the upload URL. You will also need to specify the object

        to which you want to add an attachment (see `relationships` property).

        '
      operationId: Create an Attachment
      summary: Create an Attachment
      requestBody:
        content:
          application/vnd.api+json:
            schema:
              type: object
              properties:
                data:
                  $ref: '#/components/schemas/AttachmentCreate'
            examples:
              success:
                $ref: '#/components/examples/create_request'
      responses:
        '201':
          description: OK
          content:
            application/vnd.api+json:
              schema:
                type: object
                properties:
                  data:
                    $ref: '#/components/schemas/AttachmentUpload'
              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 '\n       {\n         \"data\": {\n           \"type\": \"attachments\",\n           \"attributes\": {\n             \"title\": \"My Interesting Document\",\n             \"file_name\": \"Some Interesting File.pdf\",\n             \"external_id\": \"AT1\"\n           },\n           \"relationships\": {\n             \"contract\": {\n               \"data\": {\n                 \"id\": 1,\n                 \"type\": \"contracts\"\n               }\n             }\n           }\n         }\n       }\n     ' \\\n     \"https://api.us.workdayspend.com/services/attachments/v1/attachments\"\n"
  /attachments/{id}:
    get:
      tags:
      - attachments
      description: 'Retrieves the details of an existing attachment. You need to supply the unique attachment identifier that was returned upon attachment creation.

        '
      operationId: Get an Attachment
      summary: Get an Attachment
      parameters:
      - name: id
        in: path
        description: Unique attachment 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/Attachment'
              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/attachments/v1/attachments/1\"\n"
    patch:
      tags:
      - attachments
      description: 'Update an attachment for an object. This endpoint represents the first step in the two-step

        update upload workflow, described in the [Working with Attachments](#section/Working-with-Attachments)

        section.


        New `upload_url` and `upload_headers` will be returned when the `file_name` attribute is passed. In this case, the existing `upload_url` will be overridden with a new one that doesn’t have the associated file yet, pending completion of the second step in the described upload process.

        '
      operationId: Update an Attachment
      summary: Update an Attachment
      parameters:
      - name: id
        in: path
        description: Unique attachment identifier.
        required: true
        schema:
          type: integer
        example: 1
      requestBody:
        content:
          application/vnd.api+json:
            schema:
              type: object
              properties:
                data:
                  $ref: '#/components/schemas/AttachmentUpdate'
            examples:
              success:
                $ref: '#/components/examples/update_request'
      responses:
        '200':
          description: OK
          content:
            application/vnd.api+json:
              schema:
                type: object
                properties:
                  data:
                    $ref: '#/components/schemas/AttachmentUpload'
              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 'attachments'
                  description: 'Returns error due to invalid `type` parameter.

                    '
                  value:
                    errors:
                    - detail: Missing or invalid 'type' specified, expected 'attachments'
      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 '\n       {\n         \"data\": {\n           \"id\": \"1\",\n           \"type\": \"attachments\",\n           \"attributes\": {\n             \"title\": \"My Interesting Document\",\n             \"file_name\": \"Some Interesting File.pdf\"\n           }\n         }\n       }\n     ' \\\n     \"https://api.us.workdayspend.com/services/attachments/v1/attachments/1\"\n"
  /attachments/{external_id}/external_id:
    get:
      tags:
      - attachments
      description: 'Retrieves the details of an existing attachment. You need to supply the unique attachment identifier (external ID) that was set during attachment creation.

        '
      operationId: Get an Attachment by External ID
      summary: Get an Attachment by External ID
      parameters:
      - name: external_id
        in: path
        description: Unique attachment external identifier.
        required: true
        schema:
          type: string
        example: AT1
      responses:
        '200':
          description: OK
          content:
            application/vnd.api+json:
              schema:
                type: object
                properties:
                  data:
                    $ref: '#/components/schemas/Attachment'
              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/attachments/v1/attachments/AT1/external_id\"\n"
    patch:
      tags:
      - attachments
      description: 'Update an attachment for an object. This endpoint represents the first step in the two-step

        update upload workflow, described in the [Working with Attachments](#section/Working-with-Attachments)

        section.


        New `upload_url` and `upload_headers` will be returned when the `file_name` attribute is passed. In this case, the existing `upload_url` will be overridden with a new one that doesn’t have the associated file yet, pending completion of the second step in the described upload process.

        '
      operationId: Update an Attachment by External ID
      summary: Update an Attachment by External ID
      parameters:
      - name: external_id
        in: path
        description: Unique attachment external identifier.
        required: true
        schema:
          type: string
        example: AT1
      requestBody:
        content:
          application/vnd.api+json:
            schema:
              type: object
              properties:
                data:
                  $ref: '#/components/schemas/AttachmentUpdate'
            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/AttachmentUpload'
              examples:
                success:
                  $ref: '#/components/examples/external_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 'attachments'
                  description: 'Returns error due to invalid `type` parameter.

                    '
                  value:
                    errors:
                    - detail: Missing or invalid 'type' specified, expected 'attachments'
      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 '\n       {\n         \"data\": {\n           \"id\": \"AT1\",\n           \"type\": \"attachments\",\n           \"attributes\": {\n             \"title\": \"My Interesting Document\",\n             \"file_name\": \"Some Interesting File.pdf\"\n           }\n         }\n       }\n     ' \\\n     \"https://api.us.workdayspend.com/services/attachments/v1/attachments/AT1/external_id\"\n"
components:
  schemas:
    ContractTypeValue:
      type: string
      description: Object type, should always be `contracts`.
      example: contracts
    Error:
      type: object
      properties:
        detail:
          type: string
          description: A human-readable explanation specific to this occurrence of the problem.
    SupplierCompanyBase:
      title: SupplierCompany
      type: object
      required:
      - type
      - id
      properties:
        type:
          $ref: '#/components/schemas/SupplierCompanyType'
        id:
          $ref: '#/components/schemas/SupplierCompanyId'
    Errors:
      type: object
      properties:
        errors:
          type: array
          items:
            $ref: '#/components/schemas/Error'
    AttachmentId:
      type: integer
      description: Attachment identifier string.
      example: 1
    AttachmentContractRelationship:
      title: Contract
      type: object
      description: Contract relationship.
      required:
      - contract
      properties:
        contract:
          type: object
          properties:
            data:
              $ref: '#/components/schemas/ContractBase'
    EventBase:
      title: Event
      type: object
      required:
      - type
      - id
      properties:
        type:
          $ref: '#/components/schemas/EventType'
        id:
          $ref: '#/components/schemas/EventId'
    AttachmentEventRelationship:
      title: Event
      type: object
      description: Event relationship.
      required:
      - event
      properties:
        event:
          type: object
          properties:
            data:
              $ref: '#/components/schemas/EventBase'
    SupplierCompanyType:
      type: string
      description: Object type, should always be `supplier_companies`.
      example: supplier_companies
    AttachmentSupplierCompanyRelationship:
      title: Supplier Company
      type: object
      description: Supplier Company relationship.
      required:
      - supplier_company
      properties:
        supplier_company:
          type: object
          properties:
            data:
              $ref: '#/components/schemas/SupplierCompanyBase'
    AttachmentInputFilter:
      type: object
      properties:
        id_equals:
          type: string
          description: Find attachments by IDs. A comma separated list of IDs to be provided.
          example: 2,5,9
    AttachmentType:
      type: string
      description: Object type, should always be `attachments`.
      example: attachments
    EventType:
      type: string
      description: Object type, should always be `events`.
      example: events
    ProjectBase:
      title: Project
      type: object
      required:
      - type
      - id
      properties:
        type:
          $ref: '#/components/schemas/ProjectType'
        id:
          $ref: '#/components/schemas/ProjectId'
    SupplierCompanyId:
      type: integer
      description: Supplier company identifier string.
      example: 1
    EventId:
      type: integer
      description: Event identifier string.
      example: 1
    AttachmentAttributesBase:
      type: object
      description: Attachment attributes.
      properties:
        title:
          type: string
          maxLength: 255
          description: Attachment title.
          example: My Contract
        file_name:
          type: string
          description: Attachment file name.
          example: My Contract.pdf
        file_size:
          type: string
          description: Attachment file size in bytes.
          readOnly: true
          example: '1023343'
        external_id:
          type: string
          maxLength: 255
          description: Attachment external identifier.
          example: AT1
    ProjectType:
      type: string
      description: Object type, should always be `projects`.
      example: projects
    AttachmentUploadAttributes:
      allOf:
      - $ref: '#/components/schemas/AttachmentAttributesBase'
      - type: object
        required:
        - file_name
        properties:
          upload_url:
            type: string
            description: 'Attachment upload URL. Please note, the URL expires within 15 minutes. This attribute

              will only be returned when creating a new attachment.

              '
            readOnly: true
          upload_headers:
            type: array
            description: 'List of required HTTP headers with their values to submit when uploading the attachment file.

              '
            readOnly: true
            items:
              type: object
              properties:
                name:
                  type: string
                  description: HTTP header name.
                value:
                  type: string
                  description: HTTP header value.
    ProjectId:
      type: integer
      description: Project identifier string.
      example: 1
    ContractId:
      type: integer
      description: Contract identifier string.
      example: 1
    AttachmentCreate:
      type: object
      required:
      - type
      properties:
        type:
          $ref: '#/components/schemas/AttachmentType'
        attributes:
          allOf:
          - $ref: '#/components/schemas/AttachmentAttributesBase'
          - type: object
            required:
            - file_name
        relationships:
          oneOf:
          - $ref: '#/components/schemas/AttachmentContractRelationship'
          - $ref: '#/components/schemas/AttachmentEventRelationship'
          - $ref: '#/components/schemas/AttachmentProjectRelationship'
          - $ref: '#/components/schemas/AttachmentSupplierCompanyRelationship'
    AttachmentUpdate:
      type: object
      required:
      - type
      - id
      properties:
        type:
          $ref: '#/components/schemas/AttachmentType'
        id:
          $ref: '#/components/schemas/AttachmentId'
        attributes:
          $ref: '#/components/schemas/AttachmentAttributesBase'
    AttachmentBase:
      title: Attachment
      type: object
      required:
      - type
      - id
      properties:
        type:
          $ref: '#/components/schemas/AttachmentType'
        id:
          $ref: '#/components/schemas/AttachmentId'
    AttachmentAttributes:
      allOf:
      - $ref: '#/components/schemas/AttachmentAttributesExtended'
      - type: object
        required:
        - file_name
    ContractBase:
      title: Contract
      type: object
      required:
      - type
      - id
      properties:
        type:
          $ref: '#/components/schemas/ContractTypeValue'
        id:
          $ref: '#/components/schemas/ContractId'
    AttachmentProjectRelationship:
      title: Project
      type: object
      description: Project relationship.
      required:
      - project
      properties:
        project:
          type: object
          properties:
            data:
              $ref: '#/components/schemas/ProjectBase'
    AttachmentAttributesExtended:
      allOf:
      - $ref: '#/components/schemas/AttachmentAttributesBase'
      - type: object
        properties:
          download_url:
            type: string
            description: Attachment download URL.
            readOnly: true
          download_url_expires_at:
            format: date-time
            description: Download URL expiration time.
            readOnly: true
            example: '2020-08-21T13:26:59.999Z'
          uploaded_by:
            type: string
            description: Email of the uploader.
            readOnly: true
          uploaded_at:
            format: date-time
            description: Time of upload.
            readOnly: true
            example: '2020-08-18T12:48:42.978Z'
    Attachment:
      allOf:
      - $ref: '#/components/schemas/AttachmentBase'
      - type: object
        properties:
          attributes:
            $ref: '#/components/schemas/AttachmentAttributes'
    AttachmentUpload:
      allOf:
      - $ref: '#/components/schemas/AttachmentBase'
      - type: object
        properties:
          attributes:
            $ref: '#/components/schemas/AttachmentUploadAttributes'
  examples:
    create_response:
      value:
        data:
          id: '1'
          type: attachments
          attributes:
            external_id: AT1
            title: My Test Document
            file_size: null
            upload_url: https://upload.s3.amazonaws.com/uploads/contract/1/hex/Some%20Test%20File.pdf?some=very&long=url
            upload_headers:
            - name: Content-Type
              value: application/octet-stream
            - name: x-amz-acl
              value: private
            - name: x-amz-server-side-encryption
              value: AES256
            - name: Content-Disposition
              value: attachment
    external_update_request:
      value:
        data:
          type: attachments
          id: AT1
          attributes:
            title: My Updated Test Document
            file_name: Some Updated Test File.pdf
            external_id: AT2
    external_update_response:
      value:
        data:
          id: '1'
          type: attachments
          attributes:
            external_id: AT2
            title: My Updated Test Document
            file_size: null
            upload_url: https://upload.s3.amazonaws.com/uploads/contract/1/hex/Some%20Updated%20Test%20File.pdf?some=very&long=url
            upload_headers:
            - name: Content-Type
              value: application/octet-stream
            - name: x-amz-acl
              value: private
            - name: x-amz-server-side-encryption
              value: AES256
            - name: Content-Disposition
              value: attachment
    create_request:
      value:
        data:
          type: attachments
          attributes:
            external_id: AT1
            title: My Test Document
            file_name: Some Test File.pdf
          relationships:
            contract:
              data:
                id: 1
                type: contracts
    index_response:
      value:
        data:
        - id: '1'
          type: attachments
          attributes:
            external_id: AT1
            title: My Test Document
            file_name: my_test_document.pdf
            file_size: '1023343'
            uploaded_at: '2020-08-18T12:48:42.978Z'
            uploaded_by: someone@example.com
            download_url: https://upload.s3.amazonaws.com/uploads/contract/1/hex/Some%20Updated%20Test%20File.pdf?some=very&long=url
            download_url_expires_at: '2020-08-18T13:26:59.999Z'
          links:
            self: ' https://api.us.workdayspend.com/services/attachments/v1/attachments/1'
        - id: '2'
          type: attachments
          attributes:
            external_id: null
            title: My Test Document 2
            file_name: my_test_document_2.pdf
            file_size: '534241'
            uploaded_at: '2020-08-19T12:48:42.978Z'
            uploaded_by: someone@example.com
            download_url: https://upload.s3.amazonaws.com/uploads/contract/2/hex/Some%20Updated%20Test%20File2.pdf?some=very&long=url
            download_url_expires_at: '2020-08-19T13:26:59.999Z'
          links:
            self: ' https://api.us.workdayspend.com/services/attachments/v1/attachments/2'
        links:
          self: https://api.us.workdayspend.com/services/attachments/v1/attachments
        meta:
          count: 2
    show_response:
      value:
        data:
          id: '1'
          type: attachments
          attributes:
            external_id: AT1
            title: My Test Document
            file_name: my_test_document.pdf
            file_size: '1023343'
            uploaded_at: '2020-08-18T12:48:42.978Z'
            uploaded_by: someone@example.com
            download_url: https://upload.s3.amazonaws.com/uploads/contract/1/hex/Some%20Updated%20Test%20File.pdf?some=very&long=url
            download_url_expires_at: '2020-08-21T13:26:59.999Z'
          links:
            self: ' https://api.us.workdayspend.com/services/attachments/v1/attachments/1'
    update_request:
      value:
        data:
          type: attachments
          id: '1'
          attributes:
            title: My Updated Test Document
            file_name: Some Updated Test File.pdf
            external_id: AT2
    external_show_response:
      value:
        data:
          id: '1'
          type: attachments
          attributes:
            external_id: AT1
            title: My Test Document
            file_name: my_test_document.pdf
            file_size: '1023343'
            uploaded_at: '2020-08-18T12:48:42.978Z'
            uploaded_by: someone@example.com
            download_url: https://upload.s3.amazonaws.com/uploads/contract/1/hex/Some%20Updated%20Test%20File.pdf?some=very&long=url
            download_url_expires_at: '2020-08-21T13:26:59.999Z'
          links:
            self: ' https://api.us.workdayspend.com/services/attachments/v1/attachments/1'
    update_response:
      value:
        data:
          id: '1'
          type: attachments
          attributes:
            external_id: AT2
            title: My Updated Test Document
            file_size: null
            upload_url: https://upload.s3.amazonaws.com/uploads/contract/1/hex/Some%20Updated%20Test%20File.pdf?some=very&long=url
            upload_headers:
            - name: Content-Type
              value: application/octet-stream
            - name: x-amz-acl
              value: private
            - name: x-amz-server-side-encryption
              value: AES256
            - name: Content-Disposition
              value: attachment
  securitySchemes:
    api_key:
      type: apiKey
      name: X-Api-Key
      in: header
      description: Company API key.
    user_token:
      type: apiKey
      name: X-User-Token
      in: header
      description: User token.
    user_email:
      type: apiKey
      name: X-User-Email
      in: header
      description: User email.
x-tagGroups:
- name: Getting Started
  tags:
  - support
  - servers
  - api_specification
  - authentication
  - rate_limiting
- name: Attachments
  tags:
  - attachments