Equinix Projects API

Project Management. Check out the product docs to learn more about [Projects](https://metal.equinix.com/developers/docs/accounts/projects/).

OpenAPI Specification

equinix-projects-api-openapi.yml Raw ↑
openapi: 3.0.1
info:
  title: Equinix API Authentication Projects API
  description: 'Equinix APIs use the OAuth 2.0 for authentication and authorization. Equinix supports the resource owner password and the client credentials flow.

    To begin, obtain OAuth 2.0 client credentials from the Equinix Developer Console under "My Apps". Then your client application  requests an access token from the Equinix API Authorization endpoint, extracts the access_token from the response, and sends the Bearer token to the API that you want to access'
  termsOfService: https://www.equinix.com/about/legal/terms
  contact:
    name: Equinix API Support
    url: https://docs.equinix.com/api-support.htm
  version: '1.2'
servers:
- url: https://api.equinix.com
tags:
- description: 'Project Management. Check out the product docs to learn more about [Projects](https://metal.equinix.com/developers/docs/accounts/projects/).

    '
  externalDocs:
    url: https://metal.equinix.com/developers/docs/accounts/projects/
  name: Projects
paths:
  /projects:
    get:
      description: Returns a collection of projects that the current user is a member of.
      operationId: findProjects
      parameters:
      - description: Filter results by name.
        in: query
        name: name
        schema:
          type: string
      - description: 'Nested attributes to include. Included objects will return their full

          attributes. Attribute names can be dotted (up to 3 levels) to included deeply

          nested objects.'
        explode: false
        in: query
        name: include
        schema:
          items:
            type: string
          type: array
        style: form
      - description: 'Nested attributes to exclude. Excluded objects will return only the href

          attribute. Attribute names can be dotted (up to 3 levels) to exclude deeply

          nested objects.'
        explode: false
        in: query
        name: exclude
        schema:
          items:
            type: string
          type: array
        style: form
      - description: Page to return
        in: query
        name: page
        schema:
          default: 1
          format: int32
          maximum: 100000
          minimum: 1
          type: integer
      - description: Items returned per page
        in: query
        name: per_page
        schema:
          default: 10
          format: int32
          maximum: 1000
          minimum: 1
          type: integer
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProjectList'
          description: ok
        '401':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
          description: unauthorized
      summary: Retrieve all projects
      tags:
      - Projects
      x-equinix-metal-paginated-property: Projects
    post:
      description: Creates a new project for the user default organization. If the user don't have an organization, a new one will be created.
      operationId: createProject
      parameters:
      - description: 'Nested attributes to include. Included objects will return their full

          attributes. Attribute names can be dotted (up to 3 levels) to included deeply

          nested objects.'
        explode: false
        in: query
        name: include
        schema:
          items:
            type: string
          type: array
        style: form
      - description: 'Nested attributes to exclude. Excluded objects will return only the href

          attribute. Attribute names can be dotted (up to 3 levels) to exclude deeply

          nested objects.'
        explode: false
        in: query
        name: exclude
        schema:
          items:
            type: string
          type: array
        style: form
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ProjectCreateFromRootInput'
        description: Project to create
        required: true
      responses:
        '201':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Project'
          description: created
        '401':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
          description: unauthorized
        '422':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
          description: unprocessable entity
      summary: Create a project
      tags:
      - Projects
  /projects/{id}:
    delete:
      description: Deletes the project.
      operationId: deleteProject
      parameters:
      - description: Project UUID
        in: path
        name: id
        required: true
        schema:
          format: uuid
          type: string
      responses:
        '204':
          description: no content
        '401':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
          description: unauthorized
        '403':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
          description: forbidden
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
          description: not found
      summary: Delete the project
      tags:
      - Projects
    get:
      description: Returns a single project if the user has access
      operationId: findProjectById
      parameters:
      - description: Project UUID
        in: path
        name: id
        required: true
        schema:
          format: uuid
          type: string
      - description: 'Nested attributes to include. Included objects will return their full

          attributes. Attribute names can be dotted (up to 3 levels) to included deeply

          nested objects.'
        explode: false
        in: query
        name: include
        schema:
          items:
            type: string
          type: array
        style: form
      - description: 'Nested attributes to exclude. Excluded objects will return only the href

          attribute. Attribute names can be dotted (up to 3 levels) to exclude deeply

          nested objects.'
        explode: false
        in: query
        name: exclude
        schema:
          items:
            type: string
          type: array
        style: form
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Project'
          description: ok
        '401':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
          description: unauthorized
        '403':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
          description: forbidden
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
          description: not found
      summary: Retrieve a project
      tags:
      - Projects
    put:
      description: Updates the project.
      operationId: updateProject
      parameters:
      - description: Project UUID
        in: path
        name: id
        required: true
        schema:
          format: uuid
          type: string
      - description: 'Nested attributes to include. Included objects will return their full

          attributes. Attribute names can be dotted (up to 3 levels) to included deeply

          nested objects.'
        explode: false
        in: query
        name: include
        schema:
          items:
            type: string
          type: array
        style: form
      - description: 'Nested attributes to exclude. Excluded objects will return only the href

          attribute. Attribute names can be dotted (up to 3 levels) to exclude deeply

          nested objects.'
        explode: false
        in: query
        name: exclude
        schema:
          items:
            type: string
          type: array
        style: form
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ProjectUpdateInput'
        description: Project to update
        required: true
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Project'
          description: ok
        '401':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
          description: unauthorized
        '403':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
          description: forbidden
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
          description: not found
        '422':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
          description: unprocessable entity
      summary: Update the project
      tags:
      - Projects
  /projects/{id}/customdata:
    get:
      description: Provides the custom metadata stored for this project in json format
      operationId: findProjectCustomdata
      parameters:
      - description: Project UUID
        in: path
        name: id
        required: true
        schema:
          format: uuid
          type: string
      responses:
        '200':
          description: ok
        '401':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
          description: unauthorized
        '403':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
          description: forbidden
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
          description: not found
      summary: Retrieve the custom metadata of a project
      tags:
      - Projects
  /projects/{id}/transfers:
    post:
      deprecated: true
      description: Organization owners can transfer their projects to other organizations.
      operationId: createTransferRequest
      parameters:
      - description: UUID of the project to be transferred
        in: path
        name: id
        required: true
        schema:
          format: uuid
          type: string
      - description: 'Nested attributes to include. Included objects will return their full

          attributes. Attribute names can be dotted (up to 3 levels) to included deeply

          nested objects.'
        explode: false
        in: query
        name: include
        schema:
          items:
            type: string
          type: array
        style: form
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/TransferRequestInput'
        description: Transfer Request to create
        required: true
      responses:
        '201':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TransferRequest'
          description: created
        '401':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
          description: unauthorized
        '403':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
          description: forbidden
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
          description: not found
        '422':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
          description: unprocessable entity
      summary: Create a transfer request
      tags:
      - Projects
  /projects/{project_id}/invitations:
    get:
      description: Returns all invitations in a project.
      operationId: findProjectInvitations
      parameters:
      - description: 'Nested attributes to include. Included objects will return their full

          attributes. Attribute names can be dotted (up to 3 levels) to included deeply

          nested objects.'
        explode: false
        in: query
        name: include
        schema:
          items:
            type: string
          type: array
        style: form
      - description: Page to return
        in: query
        name: page
        schema:
          default: 1
          format: int32
          maximum: 100000
          minimum: 1
          type: integer
      - description: Items returned per page
        in: query
        name: per_page
        schema:
          default: 10
          format: int32
          maximum: 1000
          minimum: 1
          type: integer
      - description: Project UUID
        in: path
        name: project_id
        required: true
        schema:
          format: uuid
          type: string
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/InvitationList'
          description: ok
        '401':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
          description: unauthorized
        '403':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
          description: forbidden
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
          description: not found
      summary: Retrieve project invitations
      tags:
      - Projects
    post:
      description: In order to add a user to a project, they must first be invited.
      operationId: createProjectInvitation
      parameters:
      - description: Project UUID
        in: path
        name: project_id
        required: true
        schema:
          format: uuid
          type: string
      - description: 'Nested attributes to include. Included objects will return their full

          attributes. Attribute names can be dotted (up to 3 levels) to included deeply

          nested objects.'
        explode: false
        in: query
        name: include
        schema:
          items:
            type: string
          type: array
        style: form
      requestBody:
        $ref: '#/components/requestBodies/InvitationInput'
      responses:
        '201':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Invitation'
          description: created
        '401':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
          description: unauthorized
        '403':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
          description: forbidden
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
          description: not found
        '422':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
          description: unprocessable entity
      summary: Create an invitation for a project
      tags:
      - Projects
  /projects/{project_id}/ips/{id}/customdata:
    get:
      description: Provides the custom metadata stored for this IP Reservation in json format
      operationId: findIPReservationCustomdata
      parameters:
      - description: Project UUID
        in: path
        name: project_id
        required: true
        schema:
          format: uuid
          type: string
      - description: Ip Reservation UUID
        in: path
        name: id
        required: true
        schema:
          format: uuid
          type: string
      responses:
        '200':
          description: ok
        '401':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
          description: unauthorized
        '403':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
          description: forbidden
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
          description: not found
      summary: Retrieve the custom metadata of an IP Reservation
      tags:
      - Projects
  /projects/{project_id}/memberships:
    get:
      description: Returns all memberships in a project.
      operationId: findProjectMemberships
      parameters:
      - description: Search by member full name, id and email.
        in: query
        name: search
        schema:
          type: string
      - description: 'Nested attributes to include. Included objects will return their full

          attributes. Attribute names can be dotted (up to 3 levels) to included deeply

          nested objects.'
        explode: false
        in: query
        name: include
        schema:
          items:
            type: string
          type: array
        style: form
      - description: Page to return
        in: query
        name: page
        schema:
          default: 1
          format: int32
          maximum: 100000
          minimum: 1
          type: integer
      - description: Items returned per page
        in: query
        name: per_page
        schema:
          default: 10
          format: int32
          maximum: 1000
          minimum: 1
          type: integer
      - description: Project UUID
        in: path
        name: project_id
        required: true
        schema:
          format: uuid
          type: string
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/MembershipList'
          description: ok
        '401':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
          description: unauthorized
        '403':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
          description: forbidden
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
          description: not found
      summary: Retrieve project memberships
      tags:
      - Projects
components:
  schemas:
    Meta:
      example:
        next:
          href: href
        total: 0
        last:
          href: href
        previous:
          href: href
        last_page: 1
        self:
          href: href
        first:
          href: href
        current_page: 6
      properties:
        first:
          $ref: '#/components/schemas/Href'
        last:
          $ref: '#/components/schemas/Href'
        next:
          $ref: '#/components/schemas/Href'
        previous:
          $ref: '#/components/schemas/Href'
        self:
          $ref: '#/components/schemas/Href'
        total:
          type: integer
        current_page:
          type: integer
        last_page:
          type: integer
      type: object
    MembershipList:
      example:
        memberships:
        - updated_at: 2000-01-23 04:56:07+00:00
          roles:
          - roles
          - roles
          created_at: 2000-01-23 04:56:07+00:00
          project:
            href: href
          href: href
          id: 046b6c7f-0b8a-43b9-b35d-6489e6daee91
          user:
            href: href
        - updated_at: 2000-01-23 04:56:07+00:00
          roles:
          - roles
          - roles
          created_at: 2000-01-23 04:56:07+00:00
          project:
            href: href
          href: href
          id: 046b6c7f-0b8a-43b9-b35d-6489e6daee91
          user:
            href: href
      properties:
        memberships:
          items:
            $ref: '#/components/schemas/Membership'
          type: array
      type: object
    ProjectList:
      example:
        projects:
        - devices:
          - href: href
          - href: href
          volumes:
          - href: href
          - href: href
          created_at: 2000-01-23 04:56:07+00:00
          type: null
          memberships:
          - href: href
          - href: href
          bgp_config:
            href: href
          tags:
          - tags
          - tags
          max_devices: '{}'
          ssh_keys:
          - href: href
          - href: href
          updated_at: 2000-01-23 04:56:07+00:00
          invitations:
          - href: href
          - href: href
          members:
          - href: href
          - href: href
          organization:
            website: website
            address:
              country: country
              address: address
              address2: address2
              city: city
              coordinates:
                latitude: latitude
                longitude: longitude
              state: state
              zip_code: zip_code
            projects:
            - href: href
            - href: href
            credit_amount: 1.4658129
            created_at: 2000-01-23 04:56:07+00:00
            description: description
            billing_address:
              country: country
              address: address
              address2: address2
              city: city
              coordinates:
                latitude: latitude
                longitude: longitude
              state: state
              zip_code: zip_code
            memberships:
            - href: href
            - href: href
            enforce_2fa_at: 2000-01-23 04:56:07+00:00
            twitter: twitter
            updated_at: 2000-01-23 04:56:07+00:00
            terms: 5
            members:
            - href: href
            - href: href
            name: name
            logo: logo
            customdata: '{}'
            id: 046b6c7f-0b8a-43b9-b35d-6489e6daee91
          name: name
          network_status: '{}'
          customdata: '{}'
          href: href
          id: 046b6c7f-0b8a-43b9-b35d-6489e6daee91
          payment_method:
            href: href
        - devices:
          - href: href
          - href: href
          volumes:
          - href: href
          - href: href
          created_at: 2000-01-23 04:56:07+00:00
          type: null
          memberships:
          - href: href
          - href: href
          bgp_config:
            href: href
          tags:
          - tags
          - tags
          max_devices: '{}'
          ssh_keys:
          - href: href
          - href: href
          updated_at: 2000-01-23 04:56:07+00:00
          invitations:
          - href: href
          - href: href
          members:
          - href: href
          - href: href
          organization:
            website: website
            address:
              country: country
              address: address
              address2: address2
              city: city
              coordinates:
                latitude: latitude
                longitude: longitude
              state: state
              zip_code: zip_code
            projects:
            - href: href
            - href: href
            credit_amount: 1.4658129
            created_at: 2000-01-23 04:56:07+00:00
            description: description
            billing_address:
              country: country
              address: address
              address2: address2
              city: city
              coordinates:
                latitude: latitude
                longitude: longitude
              state: state
              zip_code: zip_code
            memberships:
            - href: href
            - href: href
            enforce_2fa_at: 2000-01-23 04:56:07+00:00
            twitter: twitter
            updated_at: 2000-01-23 04:56:07+00:00
            terms: 5
            members:
            - href: href
            - href: href
            name: name
            logo: logo
            customdata: '{}'
            id: 046b6c7f-0b8a-43b9-b35d-6489e6daee91
          name: name
          network_status: '{}'
          customdata: '{}'
          href: href
          id: 046b6c7f-0b8a-43b9-b35d-6489e6daee91
          payment_method:
            href: href
        meta:
          next:
            href: href
          total: 0
          last:
            href: href
          previous:
            href: href
          last_page: 1
          self:
            href: href
          first:
            href: href
          current_page: 6
      properties:
        meta:
          $ref: '#/components/schemas/Meta'
        projects:
          items:
            $ref: '#/components/schemas/Project'
          type: array
      type: object
    Invitation_roles_inner:
      enum:
      - admin
      - billing
      - collaborator
      - limited_collaborator
      type: string
    Address:
      example:
        country: country
        address: address
        address2: address2
        city: city
        coordinates:
          latitude: latitude
          longitude: longitude
        state: state
        zip_code: zip_code
      properties:
        address:
          type: string
        address2:
          type: string
        city:
          type: string
        coordinates:
          $ref: '#/components/schemas/Coordinates'
        country:
          type: string
        state:
          type: string
        zip_code:
          type: string
      required:
      - address
      - country
      - zip_code
      type: object
    ProjectCreateFromRootInput_type:
      description: The type of the project. If no type is specified the project type will automatically be `default` Projects of type 'vmce' are part of an in development feature and not available to all customers.
      enum:
      - default
      - vmce
      type: string
    Organization:
      example:
        website: website
        address:
          country: country
          address: address
          address2: address2
          city: city
          coordinates:
            latitude: latitude
            longitude: longitude
          state: state
          zip_code: zip_code
        projects:
        - href: href
        - href: href
        credit_amount: 1.4658129
        created_at: 2000-01-23 04:56:07+00:00
        description: description
        billing_address:
          country: country
          address: address
          address2: address2
          city: city
          coordinates:
            latitude: latitude
            longitude: longitude
          state: state
          zip_code: zip_code
        memberships:
        - href: href
        - href: href
        enforce_2fa_at: 2000-01-23 04:56:07+00:00
        twitter: twitter
        updated_at: 2000-01-23 04:56:07+00:00
        terms: 5
        members:
        - href: href
        - href: href
        name: name
        logo: logo
        customdata: '{}'
        id: 046b6c7f-0b8a-43b9-b35d-6489e6daee91
      properties:
        address:
          $ref: '#/components/schemas/Address'
        billing_address:
          $ref: '#/components/schemas/Address'
        created_at:
          format: date-time
          type: string
        credit_amount:
          format: float
          type: number
        customdata:
          type: object
        description:
          type: string
        enforce_2fa_at:
          description: Force to all members to have enabled the two factor authentication after that date, unless the value is null
          format: date-time
          type: string
        id:
          format: uuid
          type: string
        logo:
          type: string
        members:
          items:
            $ref: '#/components/schemas/Href'
          type: array
        memberships:
          items:
            $ref: '#/components/schemas/Href'
          type: array
        name:
          type: string
        projects:
          items:
            $ref: '#/components/schemas/Href'
          type: array
        terms:
          type: integer
        twitter:
          type: string
        updated_at:
          format: date-time
          type: string
        website:
          type: string
      type: object
    InvitationInput:
      example:
        projects_ids:
        - 046b6c7f-0b8a-43b9-b35d-6489e6daee91
        - 046b6c7f-0b8a-43b9-b35d-6489e6daee91
        organization_id: 046b6c7f-0b8a-43b9-b35d-6489e6daee91
        roles:
        - null
        - null
        message: message
        invitee: invitee
      properties:
        invitee:
          format: email
          type: string
        message:
          type: string
        organization_id:
          format: uuid
          type: string
        projects_ids:
          items:
            format: uuid
            type: string
          type: array
        roles:
          items:
            $ref: '#/components/schemas/Invitation_roles_inner'
          type: array
      required:
      - invitee
      type: object
    TransferRequest:
      example:
        updated_at: 2000-01-23 04:56:07+00:00
        target_organization:
          href: href
        created_at: 2000-01-23 04:56:07+00:00
        project:
          href: href
        href: href
        id: 046b6c7f-0b8a-43b9-b35d-6489e6daee91
      properties:
        created_at:
          format: date-time
          type: string
        href:
          type: string
        id:
          format: uuid
          type: string
        project:
          $ref: '#/components/schemas/Href'
        target_organization:
          $ref: '#/components/schemas/Href'
        updated_at:
          format: date-time
          type: string
      type: object
    ProjectCreateFromRootInput:
      example:
        payment_method_id: 046b6c7f-0b8a-43b9-b35d-6489e6daee91
        organization_id: 046b6c7f-0b8a-43b9-b35d-6489e6daee91
        name: name
        customdata: '{}'
        type: null
        tags:
        - tags
        - tags
      properties:
        customdata:
          type: object
        name:
          description: The name of the project. Cannot contain characters encoded in greater than 3 bytes such as emojis.
          maxLength: 80
          minLength: 1
          type: string
        organization_id:
          format: uuid
          type: string
        payment_method_id:
          format: uuid
          type: string
        type:
          $ref: '#/components/schemas/ProjectCreateFromRootInput_type'
        tags:
          items:
            type: string
          type: array
      required:
      - name
      type: object
    Project_type:
      description: The type of the project. Projects of type `vmce` are part of an in development feature and not available to all customers.
      enum:
      - default
      - vmce
      type: string
    TransferRequestInput:
      example:
        target_organization_id: 046b6c7f-0b8a-43b9-b35d-6489e6daee91
      properties:
        target_organization_id:
          format: uuid
          type: string
      type: object
    InvitationList:
      example:
        invitations:
        - updated_at: 2000-01-23 04:56:07+00:00
          roles:
          - roles
          - roles
          created_at: 2000-01-23 04:56:07+00:00
          project:
            href: href
          href: href
          id: 046b6c7f-0b8a-43b9-b35d-6489e6daee91
          user:
            href: href
        - updated_at: 2000-01-23 04:56:07+00:00
          roles:
          - roles
          - roles
          created_at: 2000-01-23 04:56:07+00:00
          project:
            href: href
          href: href
          id: 046b6c7f-0b8a-43b9-b35d-6489e6daee91
          user:
            href: href
      properties:
        invitations:
          items:
            $ref: '#/components/schemas/Mem

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