---
openapi: 3.0.1
info:
  title: API V1
  version: v1
paths:
  "/v1/occupations":
    get:
      summary: List all occupations
      tags:
      - Occupations
      description: List all available occupations
      responses:
        '200':
          description: List of occupations
          content:
            application/json:
              examples:
                example_key:
                  value:
                    data:
                    - type: occupations
                      attributes:
                        value: public_agent
                        label: Funcionário público
                    - type: occupations
                      attributes:
                        value: retired
                        label: Aposentado/Pensionista
        '401':
          description: Unauthorized
  "/v1/payment_dates":
    get:
      summary: List all available payment dates
      tags:
      - Payment Dates
      description: List all available payment dates
      responses:
        '200':
          description: List of available payment dates
          content:
            application/json:
              examples:
                example_key:
                  value:
                    data:
                    - type: payment_date_option
                      attributes:
                        value: '2024-05-15'
                        label: 15/05
                    - type: payment_date_option
                      attributes:
                        value: '2024-06-10'
                        label: 10/06
        '401':
          description: Unauthorized
  "/v1/procedure_types":
    get:
      summary: List all procedure types
      tags:
      - Procedure Types
      description: List all available procedure types
      responses:
        '200':
          description: List of procedure types
          content:
            application/json:
              examples:
                example_key:
                  value:
                    data:
                    - type: procedure_types
                      attributes:
                        value: dentistry
                        label: Odontologia
                    - type: procedure_types
                      attributes:
                        value: diagnosys_exams
                        label: Exames/Diagnósticos
        '401':
          description: Unauthorized
  "/v1/relationships":
    get:
      summary: List all available relationships
      tags:
      - Relationships
      description: List all available relationships
      responses:
        '200':
          description: List of available relationships
          content:
            application/json:
              examples:
                example_key:
                  value:
                    data:
                    - value: parent
                      label: Pai/Mãe
                    - value: sibling
                      label: Irmão/Irmã
        '401':
          description: Unauthorized
  "/v1/retails/pre_analyses":
    post:
      summary: Create a pre analysis
      tags:
      - - Pre Analyses
      description: Creates a pre analysis
      parameters: []
      responses:
        '201':
          description: Created
        '404':
          description: Not Found
        '422':
          description: Unprocessable Entity
        '401':
          description: Unauthorized
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                birthdate:
                  type: string
                cnpj:
                  type: string
                cpf:
                  type: string
                occupation:
                  type: string
                procedure_type:
                  type: string
                scr_consulting_approved:
                  type: boolean
                total_amount:
                  type: string
                zipcode:
                  type: string
              required:
              - birthdate
              - cnpj
              - cpf
              - zipcode
              - occupation
              - procedure_type
              - total_amount
            examples:
              '0':
                summary: Create a pre analysis
                value:
                  birthdate: 01/01/2021
                  cnpj: 73.564.596/7645-09
                  cpf: 372.253.457-70
                  occupation: autonomous
                  procedure_type: dentistry
                  scr_consulting_approved: true
                  total_amount: '1000'
                  zipcode: '09321-070'
  "/v1/retails/pre_analyses/{id}":
    get:
      summary: Get a pre analysis
      tags:
      - - Pre Analyses
      description: Get a pre analysis
      parameters:
      - name: id
        in: path
        required: true
        schema:
          type: string
      responses:
        '200':
          description: OK
          content:
            application/json:
              examples:
                example_key:
                  value:
                    data:
                      id: '1'
                      type: pre_analysis
                      attributes:
                        birthdate: 01/01/2021
                        contract_amount: 1000
                        counter_proposal_amount: 1000
                        cpf: 483.135.560-00
                        occupation: autonomous
                        procedure_type: dentistry
                        state: rejected
                        zipcode: '09321-070'
                        created_at: '2024-05-06T16:15:04-03:00'
                        updated_at: '2024-05-06T16:15:04-03:00'
                        counter_proposal_data:
                          total_amount: 1000
                          installment_qty: 1
                          installment_amount: 1000
                        simulation_results:
                        - term: 12
                          installment_value: '1000'
                          total_value: '1000'
                        retail_cnpj: 12.345.678/0001-12
        '422':
          description: Unauthorized clinic group
        '404':
          description: Not Found
        '401':
          description: Unauthorized
  "/v1/retails/requests":
    post:
      summary: Creates a request
      tags:
      - - Requests
      description: Creates a request
      parameters: []
      responses:
        '201':
          description: request created
        '404':
          description: retail not found
        '422':
          description: invalid clinic group
        '401':
          description: unauthorized
      requestBody:
        content:
          multipart/form-data:
            schema:
              type: object
              properties:
                medical_procedure_files[]:
                  type: array
                  items:
                    type: string
                    format: binary
                address_city:
                  type: string
                address_complement:
                  type: string
                address_district:
                  type: string
                address_number:
                  type: string
                address_state:
                  type: string
                address_street:
                  type: string
                address_zipcode:
                  type: string
                user_phone:
                  type: string
                  description: 'Telefone do responsável financeiro. Formato: (00)
                    0000-00000.'
                cnpj:
                  type: string
                email:
                  type: string
                estimated_treatment_duration:
                  type: string
                first_payment_date:
                  type: string
                monthly_income:
                  type: integer
                occupation:
                  type: string
                patient_cpf:
                  type: string
                  description: CPF do paciente, necessário quando o responsável financeiro
                    é diferente do paciente.
                patient_phone:
                  type: string
                  description: 'Telefone do paciente, necessário quando o responsável
                    financeiro é diferente do paciente. Formato: (00) 0000-00000.'
                patient_relationship:
                  type: string
                  description: Relação do paciente com o responsável financeiro, necessário
                    quando o responsável financeiro é diferente do paciente.
                pre_analysis_id:
                  type: integer
                procedure_type:
                  type: string
                retail_phone:
                  type: string
                  description: 'Telefone da clínica responsável pela solicitação.
                    Formato: (00) 0000-00000.'
                total_amount:
                  type: integer
  "/v1/retails/requests/{id}/cancel_contract":
    put:
      summary: Cancels a request contract
      tags:
      - - Requests
      description: Cancels a request contract
      parameters:
      - name: id
        in: path
        required: true
        schema:
          type: integer
      responses:
        '200':
          description: request contract canceled
        '404':
          description: request not found
        '422':
          description: invalid clinic group
        '401':
          description: unauthorized
  "/v1/retails/requests/{id}":
    get:
      summary: Get a request
      tags:
      - - Requests
      description: Gets a request
      parameters:
      - name: id
        in: path
        required: true
        schema:
          type: integer
      responses:
        '200':
          description: request found
          content:
            application/json:
              examples:
                example_key:
                  value:
                    data:
                      id: '37'
                      type: request
                      attributes:
                        contract_amount: 9384
                        cpf: 123.456.789-09
                        pre_analysis_id: 100
                        procedure_type: dentistry
                        state: awaiting_analysis
                        created_at: '2024-05-21T10:44:27-03:00'
                        payment_date: '2024-06-04T10:44:26-03:00'
                        contact_marked_as_pending_at: '2024-05-21T10:44:27-03:00'
                        cnpj: 40.634.135/0001-23
                        patient:
                          cpf: 123.456.789-09
                          phone: "(63) 9569-79523"
                          relationship: parent
                        user:
                          monthly_income: 12729
                          occupation: home_worker
                          email: macy.damore@mann.test
                          name: João
                          phone: "(36) 9642-49368"
                        address:
                          number: '709'
                          state: PR
                          city: São Paulo
                          complement: Apto. 493
                          district: District
                          street: Address 1
                          zipcode: 36196-901
                        proposals:
                        - installments_qty: 3
                          installments_amount: 8584
                          total_amount: 93584
                        counter_proposal_data:
                          total_amount: 8584
                          installment_qty: 3
                          installment_amount: 8584
                        contract_signing_url: qa.capim.com.br/assinatura/aYY6c3gurgSfxGhRmgDrXLigMA1rRdGy
                        ccb:
                          url: https://example.com/ccb
        '404':
          description: request not found
        '422':
          description: unauthorized clinic group
        '401':
          description: unauthorized
  "/v1/retails/requests/{id}/request_release":
    put:
      summary: Requests a contract release
      tags:
      - - Requests
      description: Request contract release
      parameters:
      - name: id
        in: path
        required: true
        schema:
          type: integer
      responses:
        '200':
          description: contract release requested
        '401':
          description: unauthorized
        '404':
          description: request not found
        '422':
          description: unprocessable entity
  "/v1/retails/requests/{id}/resend_treatment_plan":
    put:
      summary: Resend a treatment plan
      tags:
      - - Requests
      description: Resends a treatment plan for analysis
      parameters:
      - name: id
        in: path
        required: true
        schema:
          type: integer
      responses:
        '200':
          description: treatment plan re-sent
        '422':
          description: invalid treatment plan state
        '401':
          description: unauthorized
        '404':
          description: request not found
      requestBody:
        content:
          multipart/form-data:
            schema:
              type: object
              properties:
                medical_procedure_files[]:
                  type: array
                  items:
                    type: string
                    format: binary
  "/v1/retails/requests/{id}/invoices":
    get:
      summary: Get request invoices
      tags:
      - - Requests
      description: Get request invoices
      parameters:
      - name: id
        in: path
        required: true
        schema:
          type: integer
      responses:
        '200':
          description: success
          content:
            application/json:
              examples:
                example_key:
                  value:
                    invoices_url: http://example.com
        '401':
          description: unauthorized
        '404':
          description: request not found
servers:
- url: https://qa.capim.com.br/
  description: staging
components:
  securitySchemes:
    ApiKeyAuth:
      description: API key needed to access the endpoints
      type: apiKey
      in: header
      name: Authorization
security:
- ApiKeyAuth: []
