openapi: 3.2.0 info: title: FirstPromoter Contracts API version: 2.0.0 description: API for managing contracts in FirstPromoter servers: - url: https://api.firstpromoter.com/api/v2/company security: - BearerAuth: [] tags: - name: Contracts paths: /contracts: get: summary: Get all contracts description: "Returns all contracts \n **HTTP Request**
`GET https://api.firstpromoter.com/api/v2/company/contracts`
" tags: - Contracts parameters: - $ref: '#/components/parameters/AccountId' responses: '401': description: Unauthorized post: summary: Create a contract. Calls the service that generates the contract documents. description: "Create a contract \n **HTTP Request**
`POST https://api.firstpromoter.com/api/v2/company/contracts`
" tags: - Contracts parameters: - $ref: '#/components/parameters/AccountId' requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/ContractCreate' responses: '401': description: Unauthorized /contracts/{id}: get: summary: Get contract by id description: "Returns a contract by id \n **HTTP Request**
`GET https://api.firstpromoter.com/api/v2/company/contracts/{id}`
" tags: - Contracts parameters: - $ref: '#/components/parameters/AccountId' - name: id in: path required: true schema: type: integer responses: '401': description: Unauthorized put: summary: Update a contract. Calls the service that generates the contract documents if needed. description: "Update a contract \n **HTTP Request**
`PUT https://api.firstpromoter.com/api/v2/company/contracts/{id}`
" tags: - Contracts parameters: - $ref: '#/components/parameters/AccountId' - name: id in: path required: true schema: type: integer requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/ContractUpdate' responses: '401': description: Unauthorized delete: summary: Delete a contract description: "Delete a contract \n **HTTP Request**
`DELETE https://api.firstpromoter.com/api/v2/company/contracts/{id}`
" tags: - Contracts parameters: - $ref: '#/components/parameters/AccountId' - name: id in: path required: true schema: type: integer responses: '401': description: Unauthorized components: parameters: AccountId: name: Account-ID in: header required: true description: Account identifier that specifies which account is making the request schema: type: string example: acc_123456 schemas: ContractCreate: type: object required: - name - checkbox_label - content_hosted properties: name: type: string description: The name of the contract checkbox_label: type: string description: The checkbox label pattern: \[(\S.*)\] content_hosted: type: boolean description: True if "Hosted inside FirstPromoter (recommended)" is selected, False if "External link" is selected content: type: string description: Content. Required if "content_hosted" == true external_link: type: string description: The external T&C link. Required if "content_hosted" == false campaign_ids: type: array description: The selected campaign ids items: type: integer ContractUpdate: allOf: - $ref: '#/components/schemas/ContractCreate' - type: object properties: default: type: boolean description: Tells if this contract is the default one securitySchemes: BearerAuth: type: http scheme: bearer description: Access token passed as a Bearer token in the Authorization header accountId: type: apiKey in: header name: ACCOUNT-ID description: Account ID required with bearer token