rules:
  - path: <*>
    methods: ['*']
    profiles:
      AbacusProfile: [administrator]
  
  #######################
  ### abacus_contract ### 
  #######################

  - path: /contracts/account/<int>
    methods: ['GET']
    profiles:
      AbacusProfile: [administrator]
      ContentProfile: [manage_nr_ownership]
      DistributionProfile: [manage_nr_ownership]
      MoneyhubProfile: [administrator, accounting]
      LabelProfile: [catalog, administrator]
  - path: /contracts/account/dataloader
    methods: ['POST']
    profiles:
      AbacusProfile: [administrator]
      ContentProfile: [manage_nr_ownership]
      DistributionProfile: [manage_nr_ownership]
      MoneyhubProfile: [administrator, accounting]
      LabelProfile: [catalog, administrator]
  - path: /contracts/accounts
    methods: ['GET', 'POST']
    profiles:
      AbacusProfile: [administrator]
  - path: /contracts/<int>/contract-terms
    methods: ['GET']
    profiles:
      AbacusProfile: [administrator]
      ContentProfile: [manage_nr_ownership]
      DistributionProfile: [manage_nr_ownership]
  - path: /contract/<int>
    methods: ['GET']
    profiles:
      AbacusProfile: [administrator]
      ContentProfile: [manage_nr_ownership]
      DistributionProfile: [manage_nr_ownership]
      MoneyhubProfile: [administrator, accounting]
  - path: /contract/<int>/exclusions
    methods: ['GET']
    profiles:
      AbacusProfile: [administrator]
      DistributionProfile: [manage_nr_ownership]
      ContentProfile: [manage_nr_ownership]
  - path: /contract/<int>/contract-mechanical-deductions
    methods: ['GET']
    profiles:
      AbacusProfile: [administrator]
      LabelProfile: [catalog, administrator]
  - path: /contracts/mechanical-deductions/account/<int>/mechadmin
    methods: ['GET']
    profiles:
      AbacusProfile: [administrator]
      LabelProfile: [catalog, administrator]
  - path: /contract-term/<int>/conditions
    methods: ['GET']
    profiles:
      AbacusProfile: [administrator]
      DistributionProfile: [manage_nr_ownership]
      ContentProfile: [manage_nr_ownership]
  - path: /contract-term/<int>/conditions
    methods: ['POST', 'PUT']
    profiles:
      AbacusProfile: [administrator]
  - path: /contract-term-conditions/soft-delete
    methods: ['PUT']
    profiles:
      AbacusProfile: [administrator]
  - path: /contract-term-conditions/dataloader
    methods: ['POST']
    profiles:
      AbacusProfile: [administrator]
      DistributionProfile: [manage_nr_ownership]
      ContentProfile: [manage_nr_ownership]
  - path: /reference-signing-entity/<int>
    methods: ['GET']
    profiles:
      AbacusProfile: [administrator]
      Account360Profile: [account360]
      MoneyhubProfile: [administrator, accounting]
  - path: /reference-signing-entities/dataloader
    methods: ['POST']
    profiles:
      AbacusProfile: [administrator]
      Account360Profile: [account360]
      MoneyhubProfile: [administrator, accounting]
  - path: /reference-payment-entity/<int>
    methods: ['GET']
    profiles:
      AbacusProfile: [administrator]
      DocumentsProfile: [payee_management]
      MoneyhubProfile: [administrator, accounting]
  - path: /contracts
    methods: ['GET']
    profiles:
      AbacusProfile: [administrator]
  # Contract write endpoints — admin only. Mirror the graphql-abacus
  # mutations the platform UI calls (create / update / terminate / etc).
  - path: /contract/<int>
    methods: ['PUT', 'DELETE']
    profiles:
      AbacusProfile: [administrator]
  - path: /contract/<int>/terminate
    methods: ['PUT']
    profiles:
      AbacusProfile: [administrator]
  - path: /contract/<int>/reactivate
    methods: ['PUT']
    profiles:
      AbacusProfile: [administrator]
  - path: /contract/<int>/exclusions
    methods: ['POST', 'PUT']
    profiles:
      AbacusProfile: [administrator]
  - path: /contract/<int>/parties
    methods: ['POST']
    profiles:
      AbacusProfile: [administrator]
  - path: /contract/<int>/advance
    methods: ['POST']
    profiles:
      AbacusProfile: [administrator]
  - path: /contract/<int>/contract-term
    methods: ['POST']
    profiles:
      AbacusProfile: [administrator]
  - path: /contract/<int>/contract-mechanical-deduction
    methods: ['POST']
    profiles:
      AbacusProfile: [administrator]
  - path: /contract/<int>/contract-mechanical-deductions/worldwide
    methods: ['POST']
    profiles:
      AbacusProfile: [administrator]
  - path: /contract/<int>/reserves
    methods: ['PUT']
    profiles:
      AbacusProfile: [administrator]
  - path: /contract-reserves
    methods: ['POST']
    profiles:
      AbacusProfile: [administrator]
  - path: /contract/contract-lifecycle-schedule/contract-lifecycle
    methods: ['POST']
    profiles:
      AbacusProfile: [administrator]
  - path: /contract/contract-lifecycle/dataloader
    methods: ['POST']
    profiles:
      AbacusProfile: [administrator]
  - path: /contract/<int>/contract-lifecycle
    methods: ['GET']
    profiles:
      AbacusProfile: [administrator]
  - path: /reference-transaction-type-group/reference_transaction_type_group_transaction_types
    methods: ['GET']
    profiles:
      AbacusProfile: [administrator]
      ContentProfile: [manage_nr_ownership]
      DistributionProfile: [manage_nr_ownership]
      MoneyhubProfile: [administrator, accounting]
  - path: /reference-transaction-type-groups
    methods: ['GET']
    profiles:
      AbacusProfile: [administrator]
      ContentProfile: [manage_nr_ownership]
      DistributionProfile: [manage_nr_ownership]
      MoneyhubProfile: [administrator, accounting]
  - path: /contract/<int>/parties
    methods: ['GET']
    profiles:
      AbacusProfile: [administrator]
      Account360Profile: [account360]
  - path: /reference-transaction-types
    methods: ['GET']
    profiles:
      AbacusProfile: [administrator]
      MoneyhubProfile: [administrator, accounting]
  - path: /contract/<int>/contract-lifecycle-schedules
    methods: ['GET']
    profiles:
      AbacusProfile: [administrator]
  - path: /reference-sap-profit-center/<int>
    methods: ['GET']
    profiles:
      AbacusProfile: [administrator]
  - path: /reference-sap-profit-centers/dataloader
    methods: ['POST']
    profiles:
      AbacusProfile: [administrator]
      Account360Profile: [account360]
      MoneyhubProfile: [administrator, accounting]
  - path: /contract/<int>/reserves
    methods: ['GET']
    profiles:
      AbacusProfile: [administrator]
  - path: /contract-term/<int>/contract-term-schedules
    methods: ['GET']
    profiles:
      AbacusProfile: [administrator]
  - path: /contract-lifecycle-schedule-detail/dataloader
    methods: ['POST']
    profiles:
      AbacusProfile: [administrator]
  - path: /contract-lifecycle-schedules/dataloader
    methods: ['POST']
    profiles:
      AbacusProfile: [administrator]
  - path: /contract/<int>/<str>/parties
    methods: ['GET']
    profiles:
      AbacusProfile: [administrator]
  - path: /contract/<int>/advances
    methods: ['GET']
    profiles:
      AbacusProfile: [administrator]
  - path: /contract/<int>/advances/<str>
    methods: ['GET']
    profiles:
      AbacusProfile: [administrator]
  - path: /contracts/dataloader
    methods: ['POST']
    profiles:
      AbacusProfile: [administrator]
      MoneyhubProfile: [administrator, accounting]
      ContentProfile: [manage_nr_ownership]
      DistributionProfile: [manage_nr_ownership]
  - path: /contract/<int>/contract-flowthrough
    methods: ['GET']
    profiles:
      AbacusProfile: [administrator]
  - path: /contract-advance/<int>
    methods: ['GET']
    profiles:
      AbacusProfile: [administrator]
      Account360Profile: [account360]
  
  #################
  ### royalties ###
  #################

  - path: /accounting-periods
    methods: ['GET']
    profiles:
      AbacusProfile: [administrator]
  - path: /accounting-period/<int>
    methods: ['GET']
    profiles:
      AbacusProfile: [administrator]
  - path: /accounting-period/<int>/<*>
    methods: ['GET']
    profiles:
      AbacusProfile: [administrator]
  - path: /dataloader/statement-periods
    methods: ['POST']
    profiles:
      AbacusProfile: [ administrator ]
      MoneyhubProfile: [ administrator, accounting ]
      CollaboratorsProfile: [ royalties ]
      OrchAdminProfile: ['*']
  - path: /statement-periods/<*>
    methods: ['GET']
    profiles:
      AbacusProfile: [ administrator ]
      MoneyhubProfile: [ administrator, accounting ]
      CollaboratorsProfile: [ royalties ]
  - path: /statement-period/<int>
    methods: ['GET']
    profiles:
      AbacusProfile: [ administrator ]
      MoneyhubProfile: [ administrator, accounting ]
      CollaboratorsProfile: [ royalties ]
  - path: /statement-period/<int>/payment-entities
    methods: ['GET']
    profiles:
      AbacusProfile: [ administrator ]
      MoneyhubProfile: [ administrator, accounting ]
  - path: /statement-period/<int>/<*>
    methods: ['PUT']
    profiles:
      AbacusProfile: [ administrator ]
      MoneyhubProfile: [ administrator, accounting ]
  - path: /run-controller/<int>
    methods: ['GET']
    profiles:
      AbacusProfile: [administrator]
  - path: /run-controller/contract
    methods: ['POST']
    profiles:
      AbacusProfile: [administrator]
  - path: /run-controllers/contracts/account/<int>
    methods: ['GET']
    profiles:
      AbacusProfile: [administrator]
  - path: /run-controller-by-contract/<int>
    methods: ['GET']
    profiles:
      AbacusProfile: [administrator]
  - path: /run-controllers/contracts/dataloader
    methods: ['POST']
    profiles:
      AbacusProfile: [administrator]
  - path: /statement-periods
    methods: ['GET']
    profiles:
      AbacusProfile: [ administrator ]
      OrchAdminProfile: ['*']
