openapi: 3.0.1
servers:
  - url: https://bills-api.parliament.uk
info:
  contact:
    email: softwareengineering@parliament.uk
    name: UK Parliament
    url: https://www.parliament.uk
  description: API to get and search for information regarding Bills, their stages, associated amendments and publications.
  title: Bills API
  version: v1
  x-apisguru-categories:
    - open_data
  x-origin:
    - format: openapi
      url: https://bills-api.parliament.uk/swagger/v1/swagger.json
      version: "3.0"
  x-providerName: parliament.uk
  x-serviceName: bills
paths:
  /api/v1/BillTypes:
    get:
      parameters:
        - in: query
          name: Category
          schema:
            $ref: "#/components/schemas/BillTypeCategory"
        - in: query
          name: Skip
          schema:
            format: int32
            type: integer
        - in: query
          name: Take
          schema:
            format: int32
            type: integer
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/BillTypeSearchResult"
            text/json:
              schema:
                $ref: "#/components/schemas/BillTypeSearchResult"
            text/plain:
              schema:
                $ref: "#/components/schemas/BillTypeSearchResult"
          description: Success
        "400":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ProblemDetails"
            text/json:
              schema:
                $ref: "#/components/schemas/ProblemDetails"
            text/plain:
              schema:
                $ref: "#/components/schemas/ProblemDetails"
          description: Bad Request
      summary: Returns a list of Bill types.
      tags:
        - BillTypes
  /api/v1/Bills:
    get:
      operationId: GetBills
      parameters:
        - in: query
          name: SearchTerm
          schema:
            type: string
        - in: query
          name: Session
          schema:
            format: int32
            type: integer
        - in: query
          name: CurrentHouse
          schema:
            $ref: "#/components/schemas/House"
        - in: query
          name: OriginatingHouse
          schema:
            $ref: "#/components/schemas/OriginatingHouse"
        - in: query
          name: MemberId
          schema:
            format: int32
            type: integer
        - in: query
          name: DepartmentId
          schema:
            format: int32
            type: integer
        - in: query
          name: BillStage
          schema:
            items:
              format: int32
              type: integer
            type: array
        - in: query
          name: BillStagesExcluded
          schema:
            items:
              format: int32
              type: integer
            type: array
        - in: query
          name: IsDefeated
          schema:
            type: boolean
        - in: query
          name: IsWithdrawn
          schema:
            type: boolean
        - in: query
          name: BillType
          schema:
            items:
              format: int32
              type: integer
            type: array
        - in: query
          name: SortOrder
          schema:
            $ref: "#/components/schemas/BillSortOrder"
        - in: query
          name: BillIds
          schema:
            items:
              format: int32
              type: integer
            type: array
        - in: query
          name: Skip
          schema:
            format: int32
            type: integer
        - in: query
          name: Take
          schema:
            format: int32
            type: integer
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/BillSummarySearchResult"
            text/json:
              schema:
                $ref: "#/components/schemas/BillSummarySearchResult"
            text/plain:
              schema:
                $ref: "#/components/schemas/BillSummarySearchResult"
          description: Success
        "400":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ProblemDetails"
            text/json:
              schema:
                $ref: "#/components/schemas/ProblemDetails"
            text/plain:
              schema:
                $ref: "#/components/schemas/ProblemDetails"
          description: Bad Request
      summary: Returns a list of Bills.
      tags:
        - Bills
  "/api/v1/Bills/{billId}":
    get:
      operationId: GetBill
      parameters:
        - description: Bill with ID specified
          in: path
          name: billId
          required: true
          schema:
            format: int32
            type: integer
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Bill"
            text/json:
              schema:
                $ref: "#/components/schemas/Bill"
            text/plain:
              schema:
                $ref: "#/components/schemas/Bill"
          description: Success
        "400":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ProblemDetails"
            text/json:
              schema:
                $ref: "#/components/schemas/ProblemDetails"
            text/plain:
              schema:
                $ref: "#/components/schemas/ProblemDetails"
          description: Bad Request
        "404":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ProblemDetails"
            text/json:
              schema:
                $ref: "#/components/schemas/ProblemDetails"
            text/plain:
              schema:
                $ref: "#/components/schemas/ProblemDetails"
          description: Not Found
      summary: Return a Bill.
      tags:
        - Bills
  "/api/v1/Bills/{billId}/NewsArticles":
    get:
      operationId: GetNewsArticles
      parameters:
        - in: path
          name: billId
          required: true
          schema:
            format: int32
            type: integer
        - in: query
          name: Skip
          schema:
            format: int32
            type: integer
        - in: query
          name: Take
          schema:
            format: int32
            type: integer
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/NewsArticlesSummarySearchResult"
            text/json:
              schema:
                $ref: "#/components/schemas/NewsArticlesSummarySearchResult"
            text/plain:
              schema:
                $ref: "#/components/schemas/NewsArticlesSummarySearchResult"
          description: Success
        "400":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ProblemDetails"
            text/json:
              schema:
                $ref: "#/components/schemas/ProblemDetails"
            text/plain:
              schema:
                $ref: "#/components/schemas/ProblemDetails"
          description: Bad Request
        "404":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ProblemDetails"
            text/json:
              schema:
                $ref: "#/components/schemas/ProblemDetails"
            text/plain:
              schema:
                $ref: "#/components/schemas/ProblemDetails"
          description: Not Found
      summary: Returns a list of news articles for a Bill.
      tags:
        - BillNews
  "/api/v1/Bills/{billId}/Publications":
    get:
      operationId: GetBillPublication
      parameters:
        - description: Publications relating to Bill with Bill ID specified
          in: path
          name: billId
          required: true
          schema:
            format: int32
            type: integer
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/BillPublicationList"
            text/json:
              schema:
                $ref: "#/components/schemas/BillPublicationList"
            text/plain:
              schema:
                $ref: "#/components/schemas/BillPublicationList"
          description: Success
        "400":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ProblemDetails"
            text/json:
              schema:
                $ref: "#/components/schemas/ProblemDetails"
            text/plain:
              schema:
                $ref: "#/components/schemas/ProblemDetails"
          description: Bad Request
        "404":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ProblemDetails"
            text/json:
              schema:
                $ref: "#/components/schemas/ProblemDetails"
            text/plain:
              schema:
                $ref: "#/components/schemas/ProblemDetails"
          description: Not Found
      summary: Return a list of Bill publications.
      tags:
        - Publications
  "/api/v1/Bills/{billId}/Stages":
    get:
      parameters:
        - description: Stages relating to a Bill with Bill ID specified
          in: path
          name: billId
          required: true
          schema:
            format: int32
            type: integer
        - in: query
          name: Skip
          schema:
            format: int32
            type: integer
        - in: query
          name: Take
          schema:
            format: int32
            type: integer
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/StageSummarySearchResult"
            text/json:
              schema:
                $ref: "#/components/schemas/StageSummarySearchResult"
            text/plain:
              schema:
                $ref: "#/components/schemas/StageSummarySearchResult"
          description: Success
        "400":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ProblemDetails"
            text/json:
              schema:
                $ref: "#/components/schemas/ProblemDetails"
            text/plain:
              schema:
                $ref: "#/components/schemas/ProblemDetails"
          description: Bad Request
        "404":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ProblemDetails"
            text/json:
              schema:
                $ref: "#/components/schemas/ProblemDetails"
            text/plain:
              schema:
                $ref: "#/components/schemas/ProblemDetails"
          description: Not Found
      summary: Returns all Bill stages.
      tags:
        - Bills
  "/api/v1/Bills/{billId}/Stages/{billStageId}":
    get:
      operationId: GetBillStageDetails
      parameters:
        - description: Bill stage relating to Bill with Bill ID specified
          in: path
          name: billId
          required: true
          schema:
            format: int32
            type: integer
        - description: Bill stage with ID specified
          in: path
          name: billStageId
          required: true
          schema:
            format: int32
            type: integer
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/BillStageDetails"
            text/json:
              schema:
                $ref: "#/components/schemas/BillStageDetails"
            text/plain:
              schema:
                $ref: "#/components/schemas/BillStageDetails"
          description: Success
        "400":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ProblemDetails"
            text/json:
              schema:
                $ref: "#/components/schemas/ProblemDetails"
            text/plain:
              schema:
                $ref: "#/components/schemas/ProblemDetails"
          description: Bad Request
        "404":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ProblemDetails"
            text/json:
              schema:
                $ref: "#/components/schemas/ProblemDetails"
            text/plain:
              schema:
                $ref: "#/components/schemas/ProblemDetails"
          description: Not Found
      summary: Returns a Bill stage.
      tags:
        - Bills
  "/api/v1/Bills/{billId}/Stages/{billStageId}/Amendments":
    get:
      operationId: GetAmendments
      parameters:
        - description: Amendments relating to a Bill with Bill ID specified
          in: path
          name: billId
          required: true
          schema:
            format: int32
            type: integer
        - description: Amendments relating to a Bill stage with Bill stage ID specified
          in: path
          name: billStageId
          required: true
          schema:
            format: int32
            type: integer
        - in: query
          name: SearchTerm
          schema:
            type: string
        - in: query
          name: Decision
          schema:
            $ref: "#/components/schemas/Decision"
        - in: query
          name: MemberId
          schema:
            format: int32
            type: integer
        - in: query
          name: Skip
          schema:
            format: int32
            type: integer
        - in: query
          name: Take
          schema:
            format: int32
            type: integer
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/AmendmentSearchItemSearchResult"
            text/json:
              schema:
                $ref: "#/components/schemas/AmendmentSearchItemSearchResult"
            text/plain:
              schema:
                $ref: "#/components/schemas/AmendmentSearchItemSearchResult"
          description: Success
        "400":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ProblemDetails"
            text/json:
              schema:
                $ref: "#/components/schemas/ProblemDetails"
            text/plain:
              schema:
                $ref: "#/components/schemas/ProblemDetails"
          description: Bad Request
        "404":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ProblemDetails"
            text/json:
              schema:
                $ref: "#/components/schemas/ProblemDetails"
            text/plain:
              schema:
                $ref: "#/components/schemas/ProblemDetails"
          description: Not Found
      summary: Returns a list of amendments.
      tags:
        - Amendments
  "/api/v1/Bills/{billId}/Stages/{billStageId}/Amendments/{amendmentId}":
    get:
      operationId: GetAmendment
      parameters:
        - description: Amendment relating to a bill with bill ID specified
          in: path
          name: billId
          required: true
          schema:
            format: int32
            type: integer
        - description: Amendment relating to a bill stage with bill stage ID specified
          in: path
          name: billStageId
          required: true
          schema:
            format: int32
            type: integer
        - description: Amendment with amendment ID specified
          in: path
          name: amendmentId
          required: true
          schema:
            format: int32
            type: integer
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/AmendmentDetail"
            text/json:
              schema:
                $ref: "#/components/schemas/AmendmentDetail"
            text/plain:
              schema:
                $ref: "#/components/schemas/AmendmentDetail"
          description: Success
        "400":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ProblemDetails"
            text/json:
              schema:
                $ref: "#/components/schemas/ProblemDetails"
            text/plain:
              schema:
                $ref: "#/components/schemas/ProblemDetails"
          description: Bad Request
        "404":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ProblemDetails"
            text/json:
              schema:
                $ref: "#/components/schemas/ProblemDetails"
            text/plain:
              schema:
                $ref: "#/components/schemas/ProblemDetails"
          description: Not Found
      summary: Returns an amendment.
      tags:
        - Amendments
  "/api/v1/Bills/{billId}/Stages/{stageId}/Publications":
    get:
      parameters:
        - in: path
          name: billId
          required: true
          schema:
            format: int32
            type: integer
        - in: path
          name: stageId
          required: true
          schema:
            format: int32
            type: integer
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/BillStagePublicationList"
            text/json:
              schema:
                $ref: "#/components/schemas/BillStagePublicationList"
            text/plain:
              schema:
                $ref: "#/components/schemas/BillStagePublicationList"
          description: Success
        "400":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ProblemDetails"
            text/json:
              schema:
                $ref: "#/components/schemas/ProblemDetails"
            text/plain:
              schema:
                $ref: "#/components/schemas/ProblemDetails"
          description: Bad Request
        "404":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ProblemDetails"
            text/json:
              schema:
                $ref: "#/components/schemas/ProblemDetails"
            text/plain:
              schema:
                $ref: "#/components/schemas/ProblemDetails"
          description: Not Found
      summary: Return a list of Bill stage publications.
      tags:
        - Publications
  /api/v1/PublicationTypes:
    get:
      parameters:
        - in: query
          name: Skip
          schema:
            format: int32
            type: integer
        - in: query
          name: Take
          schema:
            format: int32
            type: integer
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/PublicationTypeSearchResult"
            text/json:
              schema:
                $ref: "#/components/schemas/PublicationTypeSearchResult"
            text/plain:
              schema:
                $ref: "#/components/schemas/PublicationTypeSearchResult"
          description: Success
        "400":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ProblemDetails"
            text/json:
              schema:
                $ref: "#/components/schemas/ProblemDetails"
            text/plain:
              schema:
                $ref: "#/components/schemas/ProblemDetails"
          description: Bad Request
      summary: Returns a list of publication types.
      tags:
        - PublicationTypes
  "/api/v1/Publications/{publicationId}/Documents/{documentId}":
    get:
      parameters:
        - description: Document with publication Id specified
          in: path
          name: publicationId
          required: true
          schema:
            format: int32
            type: integer
        - description: Document with Id specified
          in: path
          name: documentId
          required: true
          schema:
            format: int32
            type: integer
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/PublicationDocument"
            text/json:
              schema:
                $ref: "#/components/schemas/PublicationDocument"
            text/plain:
              schema:
                $ref: "#/components/schemas/PublicationDocument"
          description: Success
        "400":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ProblemDetails"
            text/json:
              schema:
                $ref: "#/components/schemas/ProblemDetails"
            text/plain:
              schema:
                $ref: "#/components/schemas/ProblemDetails"
          description: Bad Request
        "404":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ProblemDetails"
            text/json:
              schema:
                $ref: "#/components/schemas/ProblemDetails"
            text/plain:
              schema:
                $ref: "#/components/schemas/ProblemDetails"
          description: Not Found
      summary: Return information on a document.
      tags:
        - Documents
  "/api/v1/Publications/{publicationId}/Documents/{documentId}/Download":
    get:
      parameters:
        - description: Document with publication Id specified
          in: path
          name: publicationId
          required: true
          schema:
            format: int32
            type: integer
        - description: Document with Id specified
          in: path
          name: documentId
          required: true
          schema:
            format: int32
            type: integer
      responses:
        "200":
          description: Success
        "400":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ProblemDetails"
            text/json:
              schema:
                $ref: "#/components/schemas/ProblemDetails"
            text/plain:
              schema:
                $ref: "#/components/schemas/ProblemDetails"
          description: Bad Request
        "404":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ProblemDetails"
            text/json:
              schema:
                $ref: "#/components/schemas/ProblemDetails"
            text/plain:
              schema:
                $ref: "#/components/schemas/ProblemDetails"
          description: Not Found
      summary: Return a document.
      tags:
        - Documents
  "/api/v1/Rss/Bills/{id}.rss":
    get:
      parameters:
        - description: Id of Bill
          in: path
          name: id
          required: true
          schema:
            format: int32
            type: integer
      responses:
        "200":
          description: Success
        "400":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ProblemDetails"
            text/json:
              schema:
                $ref: "#/components/schemas/ProblemDetails"
            text/plain:
              schema:
                $ref: "#/components/schemas/ProblemDetails"
          description: Bad Request
        "404":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ProblemDetails"
            text/json:
              schema:
                $ref: "#/components/schemas/ProblemDetails"
            text/plain:
              schema:
                $ref: "#/components/schemas/ProblemDetails"
          description: Not Found
      summary: Returns an Rss feed of a certain Bill.
      tags:
        - Rss
  /api/v1/Rss/allbills.rss:
    get:
      responses:
        "200":
          description: Success
      summary: Returns an Rss feed of all Bills.
      tags:
        - Rss
  /api/v1/Rss/privatebills.rss:
    get:
      responses:
        "200":
          description: Success
      summary: Returns an Rss feed of private Bills.
      tags:
        - Rss
  /api/v1/Rss/publicbills.rss:
    get:
      responses:
        "200":
          description: Success
      summary: Returns an Rss feed of public Bills.
      tags:
        - Rss
  /api/v1/Sittings:
    get:
      operationId: GetSittings
      parameters:
        - in: query
          name: House
          schema:
            $ref: "#/components/schemas/House"
        - in: query
          name: DateFrom
          schema:
            format: date-time
            type: string
        - in: query
          name: DateTo
          schema:
            format: date-time
            type: string
        - in: query
          name: Skip
          schema:
            format: int32
            type: integer
        - in: query
          name: Take
          schema:
            format: int32
            type: integer
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/BillStageSittingSearchResult"
            text/json:
              schema:
                $ref: "#/components/schemas/BillStageSittingSearchResult"
            text/plain:
              schema:
                $ref: "#/components/schemas/BillStageSittingSearchResult"
          description: Success
        "400":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ProblemDetails"
            text/json:
              schema:
                $ref: "#/components/schemas/ProblemDetails"
            text/plain:
              schema:
                $ref: "#/components/schemas/ProblemDetails"
          description: Bad Request
      summary: Returns a list of Sittings.
      tags:
        - Sittings
  /api/v1/Stages:
    get:
      parameters:
        - in: query
          name: Skip
          schema:
            format: int32
            type: integer
        - in: query
          name: Take
          schema:
            format: int32
            type: integer
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/StageReferenceSearchResult"
            text/json:
              schema:
                $ref: "#/components/schemas/StageReferenceSearchResult"
            text/plain:
              schema:
                $ref: "#/components/schemas/StageReferenceSearchResult"
          description: Success
        "400":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ProblemDetails"
            text/json:
              schema:
                $ref: "#/components/schemas/ProblemDetails"
            text/plain:
              schema:
                $ref: "#/components/schemas/ProblemDetails"
          description: Bad Request
      summary: Returns a list of Bill stages.
      tags:
        - Stages
components:
  schemas:
    AmendmentDecision:
      enum:
        - NoDecision
        - Withdrawn
        - Disagreed
        - NotMoved
        - Agreed
      type: string
    AmendmentDetail:
      additionalProperties: false
      properties:
        amendmentId:
          format: int32
          type: integer
        amendmentLines:
          items:
            $ref: "#/components/schemas/AmendmentLine"
          nullable: true
          type: array
        amendmentNote:
          nullable: true
          type: string
        amendmentPosition:
          nullable: true
          type: string
        amendmentType:
          $ref: "#/components/schemas/AmendmentType"
        billId:
          format: int32
          type: integer
        billStageId:
          format: int32
          type: integer
        clause:
          format: int32
          nullable: true
          type: integer
        decision:
          $ref: "#/components/schemas/AmendmentDecision"
        explanatoryText:
          nullable: true
          type: string
        explanatoryTextPrefix:
          nullable: true
          type: string
        lineNumber:
          format: int32
          nullable: true
          type: integer
        marshalledListText:
          nullable: true
          type: string
        pageNumber:
          format: int32
          nullable: true
          type: integer
        schedule:
          format: int32
          nullable: true
          type: integer
        sponsors:
          items:
            $ref: "#/components/schemas/AmendmentMember"
          nullable: true
          type: array
      type: object
    AmendmentLine:
      additionalProperties: false
      properties:
        hangingIndentation:
          nullable: true
          type: string
        imageType:
          nullable: true
          type: string
        indentation:
          format: int32
          type: integer
        isImage:
          type: boolean
        text:
          nullable: true
          type: string
      type: object
    AmendmentMember:
      additionalProperties: false
      properties:
        house:
          $ref: "#/components/schemas/House"
        isLead:
          type: boolean
        memberFrom:
          nullable: true
          type: string
        memberId:
          format: int32
          type: integer
        memberPage:
          nullable: true
          type: string
        memberPhoto:
          nullable: true
          type: string
        name:
          nullable: true
          type: string
        party:
          nullable: true
          type: string
        partyColour:
          nullable: true
          type: string
        sortOrder:
          format: int32
          type: integer
      type: object
    AmendmentSearchItem:
      additionalProperties: false
      properties:
        amendmentId:
          format: int32
          type: integer
        amendmentPosition:
          nullable: true
          type: string
        amendmentType:
          $ref: "#/components/schemas/AmendmentType"
        billId:
          format: int32
          type: integer
        billStageId:
          format: int32
          type: integer
        clause:
          format: int32
          nullable: true
          type: integer
        decision:
          $ref: "#/components/schemas/AmendmentDecision"
        lineNumber:
          format: int32
          nullable: true
          type: integer
        marshalledListText:
          nullable: true
          type: string
        pageNumber:
          format: int32
          nullable: true
          type: integer
        schedule:
          format: int32
          nullable: true
          type: integer
        sponsors:
          items:
            $ref: "#/components/schemas/AmendmentMember"
          nullable: true
          type: array
        summaryText:
          items:
            type: string
          nullable: true
          type: array
      type: object
    AmendmentSearchItemSearchResult:
      additionalProperties: false
      properties:
        items:
          items:
            $ref: "#/components/schemas/AmendmentSearchItem"
          nullable: true
          type: array
        itemsPerPage:
          format: int32
          type: integer
        totalResults:
          format: int32
          type: integer
      type: object
    AmendmentType:
      enum:
        - EditLongTitle
        - EditBillBody
        - AddClauseOrSchedule
        - DeleteClauseOrSchedule
      type: string
    Bill:
      additionalProperties: false
      properties:
        agent:
          $ref: "#/components/schemas/BillAgent"
        billId:
          format: int32
          type: integer
        billTypeId:
          format: int32
          type: integer
        billWithdrawn:
          format: date-time
          nullable: true
          type: string
        currentHouse:
          $ref: "#/components/schemas/House"
        currentStage:
          $ref: "#/components/schemas/StageSummary"
        includedSessionIds:
          items:
            format: int32
            type: integer
          nullable: true
          type: array
        introducedSessionId:
          format: int32
          type: integer
        isAct:
          type: boolean
        isDefeated:
          type: boolean
        lastUpdate:
          format: date-time
          type: string
        longTitle:
          nullable: true
          type: string
        originatingHouse:
          $ref: "#/components/schemas/House"
        petitionInformation:
          nullable: true
          type: string
        petitioningPeriod:
          nullable: true
          type: string
        promoters:
          items:
            $ref: "#/components/schemas/Promoter"
          nullable: true
          type: array
        shortTitle:
          nullable: true
          type: string
        sponsors:
          items:
            $ref: "#/components/schemas/Sponsor"
          nullable: true
          type: array
        summary:
          nullable: true
          type: string
      type: object
    BillAgent:
      additionalProperties: false
      properties:
        address:
          nullable: true
          type: string
        email:
          nullable: true
          type: string
        name:
          nullable: true
          type: string
        phoneNo:
          nullable: true
          type: string
        website:
          nullable: true
          type: string
      type: object
    BillPublication:
      additionalProperties: false
      properties:
        displayDate:
          format: date-time
          type: string
        files:
          items:
            $ref: "#/components/schemas/PublicationDocument"
          nullable: true
          type: array
        house:
          $ref: "#/components/schemas/House"
        id:
          format: int32
          type: integer
        links:
          items:
            $ref: "#/components/schemas/PublicationLink"
          nullable: true
          type: array
        publicationType:
          $ref: "#/components/schemas/PublicationType"
        title:
          nullable: true
          type: string
      type: object
    BillPublicationList:
      additionalProperties: false
      properties:
        billId:
          format: int32
          type: integer
        publications:
          items:
            $ref: "#/components/schemas/BillPublication"
          nullable: true
          type: array
      type: object
    BillSortOrder:
      enum:
        - TitleAscending
        - TitleDescending
        - DateUpdatedAscending
        - DateUpdatedDescending
      type: string
    BillStageDetails:
      additionalProperties: false
      properties:
        abbreviation:
          nullable: true
          type: string
        committee:
          $ref: "#/components/schemas/Committee"
        description:
          nullable: true
          type: string
        house:
          $ref: "#/components/schemas/House"
        id:
          format: int32
          type: integer
        lastUpdate:
          format: date-time
          type: string
        nextStageBillStageId:
          format: int32
          nullable: true
          type: integer
        previousStageBillStageId:
          format: int32
          nullable: true
          type: integer
        sessionId:
          format: int32
          type: integer
        sortOrder:
          format: int32
          type: integer
        stageId:
          format: int32
          type: integer
        stageSittings:
          items:
            $ref: "#/components/schemas/BillStageSitting"
          nullable: true
          type: array
      type: object
    BillStagePublicationList:
      additionalProperties: false
      properties:
        billStageId:
          format: int32
          type: integer
        publications:
          items:
            $ref: "#/components/schemas/Publication"
          nullable: true
          type: array
        sittings:
          items:
            $ref: "#/components/schemas/BillStageSittingPublicationList"
          nullable: true
          type: array
      type: object
    BillStageSitting:
      additionalProperties: false
      properties:
        billId:
          format: int32
          type: integer
        billStageId:
          format: int32
          type: integer
        date:
          format: date-time
          nullable: true
          type: string
        id:
          format: int32
          type: integer
        stageId:
          format: int32
          type: integer
      type: object
    BillStageSittingPublicationList:
      additionalProperties: false
      properties:
        publications:
          items:
            $ref: "#/components/schemas/Publication"
          nullable: true
          type: array
        sittingId:
          format: int32
          type: integer
      type: object
    BillStageSittingSearchResult:
      additionalProperties: false
      properties:
        items:
          items:
            $ref: "#/components/schemas/BillStageSitting"
          nullable: true
          type: array
        itemsPerPage:
          format: int32
          type: integer
        totalResults:
          format: int32
          type: integer
      type: object
    BillSummary:
      additionalProperties: false
      properties:
        billId:
          format: int32
          type: integer
        billTypeId:
          format: int32
          type: integer
        billWithdrawn:
          format: date-time
          nullable: true
          type: string
        currentHouse:
          $ref: "#/components/schemas/House"
        currentStage:
          $ref: "#/components/schemas/StageSummary"
        includedSessionIds:
          items:
            format: int32
            type: integer
          nullable: true
          type: array
        introducedSessionId:
          format: int32
          type: integer
        isAct:
          type: boolean
        isDefeated:
          type: boolean
        lastUpdate:
          format: date-time
          type: string
        originatingHouse:
          $ref: "#/components/schemas/House"
        shortTitle:
          nullable: true
          type: string
      type: object
    BillSummarySearchResult:
      additionalProperties: false
      properties:
        items:
          items:
            $ref: "#/components/schemas/BillSummary"
          nullable: true
          type: array
        itemsPerPage:
          format: int32
          type: integer
        totalResults:
          format: int32
          type: integer
      type: object
    BillType:
      additionalProperties: false
      properties:
        category:
          $ref: "#/components/schemas/BillTypeCategory"
        description:
          nullable: true
          type: string
        id:
          format: int32
          type: integer
        name:
          nullable: true
          type: string
      type: object
    BillTypeCategory:
      enum:
        - Public
        - Private
        - Hybrid
      type: string
    BillTypeSearchResult:
      additionalProperties: false
      properties:
        items:
          items:
            $ref: "#/components/schemas/BillType"
          nullable: true
          type: array
        itemsPerPage:
          format: int32
          type: integer
        totalResults:
          format: int32
          type: integer
      type: object
    Committee:
      additionalProperties: false
      properties:
        category:
          nullable: true
          type: string
        house:
          $ref: "#/components/schemas/CommitteeHouse"
        id:
          format: int32
          type: integer
        name:
          nullable: true
          type: string
        url:
          nullable: true
          type: string
      type: object
    CommitteeHouse:
      enum:
        - Commons
        - Lords
        - Joint
      type: string
    Decision:
      enum:
        - All
        - NoDecision
        - Withdrawn
        - Disagreed
        - NotMoved
        - Agreed
      type: string
    House:
      enum:
        - All
        - Commons
        - Lords
        - Unassigned
      type: string
    Member:
      additionalProperties: false
      properties:
        house:
          $ref: "#/components/schemas/House"
        memberFrom:
          nullable: true
          type: string
        memberId:
          format: int32
          type: integer
        memberPage:
          nullable: true
          type: string
        memberPhoto:
          nullable: true
          type: string
        name:
          nullable: true
          type: string
        party:
          nullable: true
          type: string
        partyColour:
          nullable: true
          type: string
      type: object
    NewsArticlesSummary:
      additionalProperties: false
      properties:
        content:
          nullable: true
          type: string
        displayDate:
          format: date-time
          nullable: true
          type: string
        id:
          format: int32
          type: integer
        title:
          nullable: true
          type: string
      type: object
    NewsArticlesSummarySearchResult:
      additionalProperties: false
      properties:
        items:
          items:
            $ref: "#/components/schemas/NewsArticlesSummary"
          nullable: true
          type: array
        itemsPerPage:
          format: int32
          type: integer
        totalResults:
          format: int32
          type: integer
      type: object
    Organisation:
      additionalProperties: false
      properties:
        name:
          nullable: true
          type: string
        url:
          nullable: true
          type: string
      type: object
    OriginatingHouse:
      enum:
        - All
        - Commons
        - Lords
      type: string
    ProblemDetails:
      additionalProperties: {}
      properties:
        detail:
          nullable: true
          type: string
        instance:
          nullable: true
          type: string
        status:
          format: int32
          nullable: true
          type: integer
        title:
          nullable: true
          type: string
        type:
          nullable: true
          type: string
      type: object
    Promoter:
      additionalProperties: false
      properties:
        organisationName:
          nullable: true
          type: string
        organisationUrl:
          nullable: true
          type: string
      type: object
    Publication:
      additionalProperties: false
      properties:
        displayDate:
          format: date-time
          type: string
        files:
          items:
            $ref: "#/components/schemas/PublicationDocument"
          nullable: true
          type: array
        id:
          format: int32
          type: integer
        links:
          items:
            $ref: "#/components/schemas/PublicationLink"
          nullable: true
          type: array
        publicationType:
          $ref: "#/components/schemas/PublicationType"
        title:
          nullable: true
          type: string
      type: object
    PublicationDocument:
      additionalProperties: false
      properties:
        contentLength:
          format: int32
          type: integer
        contentType:
          nullable: true
          type: string
        filename:
          nullable: true
          type: string
        id:
          format: int32
          type: integer
      type: object
    PublicationLink:
      additionalProperties: false
      properties:
        contentType:
          nullable: true
          type: string
        id:
          format: int32
          type: integer
        title:
          nullable: true
          type: string
        url:
          nullable: true
          type: string
      type: object
    PublicationType:
      additionalProperties: false
      properties:
        description:
          nullable: true
          type: string
        id:
          format: int32
          type: integer
        name:
          nullable: true
          type: string
      type: object
    PublicationTypeSearchResult:
      additionalProperties: false
      properties:
        items:
          items:
            $ref: "#/components/schemas/PublicationType"
          nullable: true
          type: array
        itemsPerPage:
          format: int32
          type: integer
        totalResults:
          format: int32
          type: integer
      type: object
    Sponsor:
      additionalProperties: false
      properties:
        member:
          $ref: "#/components/schemas/Member"
        organisation:
          $ref: "#/components/schemas/Organisation"
        sortOrder:
          format: int32
          type: integer
      type: object
    StageReference:
      additionalProperties: false
      properties:
        house:
          $ref: "#/components/schemas/House"
        id:
          format: int32
          type: integer
        name:
          nullable: true
          type: string
      type: object
    StageReferenceSearchResult:
      additionalProperties: false
      properties:
        items:
          items:
            $ref: "#/components/schemas/StageReference"
          nullable: true
          type: array
        itemsPerPage:
          format: int32
          type: integer
        totalResults:
          format: int32
          type: integer
      type: object
    StageSummary:
      additionalProperties: false
      properties:
        abbreviation:
          nullable: true
          type: string
        description:
          nullable: true
          type: string
        house:
          $ref: "#/components/schemas/House"
        id:
          format: int32
          type: integer
        sessionId:
          format: int32
          type: integer
        sortOrder:
          format: int32
          type: integer
        stageId:
          format: int32
          type: integer
        stageSittings:
          items:
            $ref: "#/components/schemas/BillStageSitting"
          nullable: true
          type: array
      type: object
    StageSummarySearchResult:
      additionalProperties: false
      properties:
        items:
          items:
            $ref: "#/components/schemas/StageSummary"
          nullable: true
          type: array
        itemsPerPage:
          format: int32
          type: integer
        totalResults:
          format: int32
          type: integer
      type: object
